import fit2cloudEsEsLocale from 'fit2cloud-ui-plus/src/locale/lang/en';

const message = {
    commons: {
        true: 'verdadero',
        false: 'falso',
        colon: ': ',
        example: 'Por ejemplo, ',
        fit2cloud: 'FIT2CLOUD',
        lingxia: 'Lingxia',
        button: {
            run: 'Ejecutar',
            prev: 'Anterior',
            next: 'Siguiente',
            create: 'Crear ',
            add: 'Agregar ',
            save: 'Guardar ',
            set: 'Establecer',
            sync: 'Sincronizar ',
            delete: 'Eliminar',
            edit: 'Editar ',
            enable: 'Habilitar',
            disable: 'Deshabilitar',
            confirm: 'Confirmar',
            cancel: 'Cancelar',
            reset: 'Restablecer',
            setDefault: 'Restaurar valores predeterminados',
            restart: 'Reiniciar',
            conn: 'Conectar',
            disconn: 'Desconectar',
            clean: 'Limpiar',
            login: 'Iniciar sesión',
            close: 'Cerrar',
            stop: 'Detener',
            start: 'Iniciar',
            view: 'Ver',
            watch: 'Observar',
            handle: 'Disparar',
            clone: 'Clonar',
            expand: 'Expandir',
            collapse: 'Colapsar',
            log: 'Ver registros',
            back: 'Atrás',
            backup: 'Respaldar',
            recover: 'Recuperar',
            retry: 'Reintentar',
            upload: 'Subir',
            download: 'Descargar',
            init: 'Inicializar',
            verify: 'Verificar',
            saveAndEnable: 'Guardar y habilitar',
            import: 'Importar',
            export: 'Exportar',
            power: 'Autorización',
            search: 'Buscar',
            refresh: 'Actualizar',
            get: 'Obtener',
            upgrade: 'Actualizar',
            update: 'Actualizar',
            updateNow: 'Actualizar Ahora',
            ignore: 'Ignorar actualización',
            copy: 'Copiar',
            random: 'Aleatorio',
            install: 'Instalar',
            uninstall: 'Desinstalar',
            fullscreen: 'Pantalla completa',
            quitFullscreen: 'Salir de pantalla completa',
            showAll: 'Mostrar todo',
            hideSome: 'Ocultar algunos',
            agree: 'Aceptar',
            notAgree: 'No aceptar',
            preview: 'Vista previa',
            open: 'Abrir',
            notSave: 'No guardar',
            createNewFolder: 'Crear nueva carpeta',
            createNewFile: 'Crear nuevo archivo',
            helpDoc: 'Documento de ayuda',
            bind: 'Vincular',
            unbind: 'Desvincular',
            cover: 'cubrir',
            skip: 'omitir',
            fix: 'Arreglar',
            down: 'Detener',
            up: 'Iniciar',
            sure: 'Confirmar',
            show: 'Mostrar',
            hide: 'Ocultar',
            migrate: 'Migrar',
        },
        operate: {
            start: 'Iniciar',
            stop: 'Detener',
            restart: 'Reiniciar',
            reload: 'Recargar',
            rebuild: 'Reconstruir',
            sync: 'Sincronizar',
            up: 'Subir',
            down: 'Bajar',
            delete: 'Eliminar',
        },
        search: {
            timeStart: 'Hora de inicio',
            timeEnd: 'Hora de fin',
            timeRange: 'Hasta',
            dateStart: 'Fecha de inicio',
            dateEnd: 'Fecha de fin',
            date: 'Fecha',
        },
        table: {
            all: 'Todo',
            total: 'Total {0}',
            name: 'Nombre',
            type: 'Tipo',
            status: 'Estado',
            statusSuccess: 'Éxito',
            statusFailed: 'Fallido',
            statusWaiting: 'Esperando...',
            records: 'Registros',
            group: 'Grupo',
            default: 'Predeterminado',
            createdAt: 'Fecha de creación',
            publishedAt: 'Fecha de publicación',
            date: 'Fecha',
            updatedAt: 'Fecha de actualización',
            operate: 'Operaciones',
            message: 'Mensaje',
            description: 'Descripción',
            interval: 'Intervalo',
            user: 'Propietario',
            title: 'Título',
            port: 'Puerto',
            forward: 'Reenviar',
            protocol: 'Protocolo',
            tableSetting: 'Configuración de tabla',
            refreshRate: 'Frecuencia de actualización',
            noRefresh: 'Sin actualización',
            selectColumn: 'Seleccionar columna',
            local: 'local',
            serialNumber: 'Número de serie',
            manageGroup: 'Gestionar grupos',
            backToList: 'Volver a la lista',
            keepEdit: 'Continuar Editando',
        },
        loadingText: {
            Upgrading: 'Actualizando el sistema, por favor espere...',
            Restarting: 'Reiniciando el sistema, por favor espere...',
            Recovering: 'Recuperando desde instantánea, por favor espere...',
            Rollbacking: 'Revirtiendo desde instantánea, por favor espere...',
        },
        msg: {
            noneData: 'No hay datos disponibles',
            delete: 'Esta operación de eliminación no se puede deshacer. ¿Desea continuar?',
            clean: 'Esta operación de limpieza no se puede deshacer. ¿Desea continuar?',
            closeDrawerHelper: 'Es posible que el sistema no guarde los cambios que realizó. ¿Desea continuar?',
            deleteSuccess: 'Eliminación completada correctamente',
            loginSuccess: 'Inicio de sesión completado correctamente',
            operationSuccess: 'Operación completada correctamente',
            copySuccess: 'Copiado completado correctamente',
            notSupportOperation: 'Esta operación no es compatible',
            requestTimeout: 'La solicitud excedió el tiempo de espera, por favor intente de nuevo más tarde',
            infoTitle: 'Aviso',
            notRecords: 'No se ha generado ningún registro de ejecución para la tarea actual',
            sureLogOut: '¿Está seguro de que desea cerrar sesión?',
            createSuccess: 'Creación completada correctamente',
            updateSuccess: 'Actualización completada correctamente',
            uploadSuccess: 'Carga completada correctamente',
            operateConfirm: 'Si está seguro de la operación, por favor ingréselo manualmente: ',
            inputOrSelect: 'Por favor seleccione o ingrese',
            copyFailed: 'Error al copiar',
            operatorHelper: 'Se realizará la operación "{1}" en "{0}" y no se puede deshacer. ¿Desea continuar?',
            notFound: 'Lo sentimos, la página que solicitó no existe.',
            unSupportType: 'El tipo de archivo actual no es compatible.',
            unSupportSize: 'El archivo subido supera los {0}M, ¡por favor verifique!',
            fileExist: 'El archivo ya existe en la carpeta actual. No se permite subirlo de nuevo.',
            fileNameErr:
                'Solo puede subir archivos cuyo nombre contenga de 1 a 256 caracteres, incluyendo inglés, chino, dígitos o los caracteres .-_',
            confirmNoNull: 'Asegúrese de que el valor {0} no esté vacío.',
            errPort: 'Información de puerto incorrecta, ¡por favor verifique!',
            remove: 'Eliminar',
            backupHelper: 'La operación actual realizará una copia de seguridad de {0}. ¿Desea continuar?',
            recoverHelper: 'Restaurando desde el archivo {0}. Esta operación es irreversible. ¿Desea continuar?',
            refreshSuccess: 'Actualización completada con éxito',
            rootInfoErr: 'Ya se encuentra en el directorio raíz',
            resetSuccess: 'Restablecimiento completado correctamente',
            creatingInfo: 'Creando, no es necesario realizar esta operación',
            installSuccess: 'Instalación completada correctamente',
            uninstallSuccess: 'Desinstalación completada correctamente',
            offlineTips: 'La versión offline no admite esta operación',
            errImportFormat: 'Los datos de importación o el formato son anormales, ¡compruebe e inténtelo de nuevo!',
            importHelper:
                'Al importar datos conflictivos o duplicados, el contenido importado se utilizará como estándar para actualizar los datos originales de la base de datos.',
            errImport: 'El contenido del archivo es anormal:',
        },
        login: {
            username: 'Usuario',
            password: 'Contraseña',
            welcome: '¡Bienvenido de nuevo! Por favor, ingrese su nombre de usuario y contraseña para iniciar sesión.',
            errorAuthInfo: 'El nombre de usuario o la contraseña que ingresó son incorrectos, ¡inténtelo de nuevo!',
            errorMfaInfo: 'Información de autenticación incorrecta, ¡por favor intente nuevamente!',
            captchaHelper: 'Captcha',
            errorCaptcha: '¡Código captcha incorrecto!',
            notSafe: 'Acceso denegado',
            safeEntrance1: 'El inicio de sesión seguro está habilitado en el entorno actual',
            safeEntrance2:
                'Ingrese el siguiente comando en la terminal SSH para ver la entrada al panel: 1pctl user-info',
            errIP1: 'El acceso mediante dirección IP autorizada está habilitado en el entorno actual',
            errDomain1: 'La vinculación del nombre de dominio de acceso está habilitada en el entorno actual',
            errHelper:
                'Para restablecer la información de vinculación, ejecute el siguiente comando en la terminal SSH: ',
            codeInput: 'Por favor, ingrese el código de verificación de 6 dígitos del validador MFA',
            mfaTitle: 'Autenticación MFA',
            mfaCode: 'Código de verificación MFA',
            title: 'Panel de gestión de servidores Linux',
            licenseHelper: '<Acuerdo de Licencia Comunitaria>',
            errorAgree: 'Haga clic para aceptar la Licencia de Software Comunitaria',
            logout: 'Cerrar sesión',
            agreeTitle: 'Acuerdo',
            agreeContent:
                'Para proteger mejor sus derechos e intereses legítimos, por favor lea y acepte el siguiente acuerdo &laquo; <a href = "https://www.fit2cloud.com/legal/licenses.html" target = "_blank" > Acuerdo de Licencia Comunitaria </a> &raquo;',
        },
        rule: {
            username: 'Introduzca un nombre de usuario',
            password: 'Introduzca una contraseña',
            rePassword: 'La confirmación de la contraseña no coincide con la contraseña.',
            requiredInput: 'Este campo es obligatorio.',
            requiredSelect: 'Seleccione un elemento de la lista',
            illegalChar: 'Actualmente no se admite la inyección de caracteres & ; $ \' ` ( ) " > < |',
            illegalInput: 'Este campo no debe contener caracteres no permitidos.',
            commonName:
                'Este campo debe comenzar con un carácter no especial y debe estar compuesto por letras, caracteres chinos, números, ".", "-", y "_" con una longitud de 1 a 128.',
            userName:
                'Este campo debe estar compuesto por letras, caracteres chinos, números y "_" con una longitud de 3 a 30.',
            simpleName:
                'Este campo no debe comenzar con el carácter "_" y debe estar compuesto por letras, números y "_" con una longitud de 3 a 30.',
            simplePassword:
                'Este campo no debe comenzar con el carácter "_" y debe estar compuesto por letras, números y "_" con una longitud de 1 a 30.',
            dbName: 'Este campo no debe comenzar con el carácter "_" y debe estar compuesto por letras, números y "_" con una longitud de 1 a 64.',
            imageName:
                'Este campo debe estar compuesto por letras, números, ":", "@", "/", ".", "-", y "_" con una longitud de 1 a 256.',
            volumeName:
                'Este campo debe estar compuesto por letras, números, ".", "-", y "_" con una longitud de 2 a 30.',
            supervisorName:
                'Este campo debe comenzar con un carácter no especial y debe estar compuesto por letras, números, "-", y "_" con una longitud de 1 a 128.',
            composeName:
                'Debe comenzar con un carácter no especial, permite minúsculas, números, - y _, longitud de 1 a 256',
            complexityPassword:
                'Este campo debe estar compuesto por letras, números, con una longitud de 8 a 30 y contener al menos dos caracteres especiales.',
            commonPassword: 'La longitud de este campo debe ser mayor a 6.',
            linuxName:
                'La longitud de este campo debe estar entre 1 y 128. El campo no debe contener los siguientes caracteres especiales: "{0}".',
            email: 'Este campo debe ser una dirección de correo electrónico válida.',
            number: 'Este campo debe ser un número.',
            integer: 'Este campo debe ser un número entero positivo.',
            ip: 'Este campo debe ser una dirección IP válida.',
            host: 'Este campo debe ser una dirección IP válida o un nombre de dominio.',
            hostHelper: 'Admite introducir dirección IP o nombre de dominio',
            port: 'Este campo debe ser un número de puerto válido.',
            selectHelper: 'Por favor seleccione el archivo {0} correcto',
            domain: 'Este campo debe tener el formato: ejemplo.com o ejemplo.com:8080.',
            databaseName: 'Este campo debe estar compuesto por letras, números y "_" con una longitud de 1 a 30.',
            ipErr: 'Este campo debe ser una dirección IP válida.',
            numberRange: 'Este campo debe ser un número entre {0} y {1}.',
            paramName:
                'Este campo debe estar compuesto por letras, números, ".", "-", y "_" con una longitud de 2 a 30.',
            paramComplexity:
                'Este campo no debe comenzar ni terminar con caracteres especiales y debe estar compuesto por letras, números y los caracteres "{0}", con una longitud de 6 a 128.',
            paramUrlAndPort: 'Este campo debe tener el formato "http(s)://(nombre de dominio/ip):(puerto)".',
            nginxDoc: 'Este campo debe estar compuesto por letras, números y ".".',
            appName:
                'Este campo no debe comenzar ni terminar con "-" o "_" y debe estar compuesto por letras, números, "-", y "_" con una longitud de 2 a 30.',
            containerName: 'Permite letras, números, -, _ y .; no puede comenzar con - _ o .; longitud: 2-128',
            mirror: 'La dirección de aceleración del mirror debe comenzar con http(s)://, soporta letras (mayúsculas y minúsculas), números, . / y -, y no debe contener líneas en blanco.',
            disableFunction: 'Solo admite letras, guiones bajos y comas',
            leechExts: 'Solo admite letras, números y comas',
            paramSimple: 'Admite letras minúsculas y números, longitud de 1 a 128',
            filePermission: 'Error en el permiso del archivo',
            formatErr: 'Error de formato, por favor verifique e intente nuevamente',
            phpExtension: 'Solo admite _, letras minúsculas en inglés y números',
            paramHttp: 'Debe comenzar con http:// o https://',
            phone: 'El formato del número de teléfono es incorrecto',
            authBasicPassword: 'Admite letras, números y caracteres especiales comunes, longitud de 1 a 72',
            length128Err: 'La longitud no puede exceder los 128 caracteres',
            maxLength: 'La longitud no puede exceder los {0} caracteres',
            alias: 'Soporta A->Z, números, - and _, largo 1-128 carácteres, no puede empezar ni terminar con -_.',
        },
        res: {
            paramError: 'La solicitud falló, por favor intente de nuevo más tarde.',
            forbidden: 'El usuario actual no tiene permisos',
            serverError: 'Excepción del servicio',
            notFound: 'El recurso no existe',
            commonError: 'La solicitud falló',
        },
        service: {
            serviceNotStarted: `El servicio {0} no está iniciado.`,
        },
        status: {
            running: 'En ejecución',
            done: 'Completado',
            scanFailed: 'Incompleto',
            success: 'Completado con éxito',
            waiting: 'En espera',
            waitForUpgrade: 'Esperar Actualización',
            failed: 'Fallido',
            stopped: 'Detenido',
            error: 'Error',
            created: 'Creado',
            restarting: 'Reiniciando',
            uploading: 'Cargando',
            unhealthy: 'No saludable',
            removing: 'Eliminando',
            paused: 'Pausado',
            exited: 'Finalizado',
            dead: 'Muerto',
            installing: 'Instalando',
            enabled: 'Habilitado',
            disabled: 'Deshabilitado',
            normal: 'Normal',
            building: 'Construyendo',
            upgrading: 'Actualizando',
            pending: 'Pendiente de editarse',
            rebuilding: 'Reconstruyendo',
            deny: 'Denegado',
            accept: 'Aceptado',
            used: 'En uso',
            unused: 'Sin usar',
            starting: 'Iniciando',
            recreating: 'Recreando',
            creating: 'Creando',
            init: 'Esperando aplicación',
            ready: 'normal',
            applying: 'Aplicando',
            uninstalling: 'Desinstalando',
            lost: 'Contacto perdido',
            bound: 'Vinculado',
            unbind: 'Desvinculado',
            exceptional: 'Excepcional',
            free: 'Libre',
            enable: 'Habilitado',
            disable: 'Deshabilitado',
            deleted: 'Eliminado',
            downloading: 'Descargando',
            packing: 'Empaquetando',
            sending: 'Enviando',
            healthy: 'Normal',
            executing: 'Ejecutando',
            installerr: 'Instalación fallida',
            applyerror: 'Aplicación fallida',
            systemrestart: 'Interrumpido',
            starterr: 'Error al iniciar',
            uperr: 'Error al iniciar',
            new: 'Nuevo',
            conflict: 'Conflicto',
            duplicate: 'Duplicado',
            unexecuted: 'No Ejecutado',
        },
        units: {
            second: ' segundo | segundo | segundos',
            minute: 'minuto | minuto | minutos',
            hour: 'hora | hora | horas',
            day: 'día | día | días',
            week: 'semana | semana | semanas',
            month: 'mes | mes | meses',
            year: 'año | año | años',
            time: 'rqm',
            core: 'núcleo | núcleo | núcleos',
            millisecond: 'milisegundo | milisegundos',
            secondUnit: 's',
            minuteUnit: 'min',
            hourUnit: 'h',
            dayUnit: 'd',
        },
        log: {
            noLog: 'No logs available',
        },
    },
    menu: {
        home: 'Resumen',
        apps: 'Tienda de aplicaciones',
        website: 'Sitio web | Sitios web',
        project: 'Proyecto | Proyectos',
        config: 'Configuración | Configuraciones',
        ssh: 'Configuración SSH',
        firewall: 'Cortafuegos',
        ssl: 'Certificado | Certificados',
        database: 'Base de datos | Bases de datos',
        aiTools: 'IA',
        mcp: 'MCP',
        container: 'Contenedor | Contenedores',
        cronjob: 'Tarea programada | Tareas programadas',
        system: 'Sistema',
        security: 'Seguridad',
        files: 'Explorador de archivos',
        monitor: 'Monitoreo',
        terminal: 'Terminal | Terminales',
        settings: 'Configuración | Configuraciones',
        toolbox: 'Caja de herramientas',
        logs: 'Registro | Registros',
        runtime: 'Ejecución | Entornos de ejecución',
        processManage: 'Proceso | Procesos',
        process: 'Proceso | Procesos',
        network: 'Red | Redes',
        supervisor: 'Supervisor',
        tamper: 'Antimanipulación',
        app: 'Aplicación',
        msgCenter: 'Centro de tareas',
        disk: 'Disco',
    },
    home: {
        recommend: 'recomendar',
        dir: 'directorio',
        quickDir: 'Directorio rápido',
        minQuickJump: '¡Establezca al menos una entrada de salto rápido!',
        maxQuickJump: '¡Puede establecer hasta cuatro entradas de salto rápido!',
        database: 'Database - All',
        restart_1panel: 'Reiniciar panel',
        restart_system: 'Reiniciar servidor',
        operationSuccess:
            'Operación completada con éxito, reiniciando, ¡por favor actualice el navegador manualmente más tarde!',
        entranceHelper:
            'La entrada de seguridad no está habilitada. Puede habilitarla en "Configuraciones -> Seguridad" para mejorar la seguridad del sistema.',
        appInstalled: 'Aplicaciones',
        systemInfo: 'Información del sistema',
        hostname: 'Nombre del host',
        platformVersion: 'Sistema operativo',
        kernelVersion: 'Kernel',
        kernelArch: 'Arquitectura',
        network: 'Red',
        io: 'Disco I/O',
        ip: 'IP local',
        proxy: 'Proxy del sistema',
        baseInfo: 'Información básica',
        totalSend: 'Total enviado',
        totalRecv: 'Total recibido',
        rwPerSecond: 'Operaciones de E/S',
        ioDelay: 'Latencia de E/S',
        uptime: 'Tiempo en funcionamiento',
        runningTime: 'Desde',
        mem: 'Memoria del Sistema',
        swapMem: 'Partición swap',
        runSmoothly: 'Carga baja',
        runNormal: 'Carga moderada',
        runSlowly: 'Carga alta',
        runJam: 'Carga pesada',
        core: 'Núcleo físico',
        logicCore: 'Núcleo lógico',
        corePercent: 'Uso del Núcleo',
        cpuFrequency: 'Frecuencia CPU',
        cpuDetailedPercent: 'Distribución del Tiempo de CPU',
        cpuUser: 'Usuario',
        cpuSystem: 'Sistema',
        cpuIdle: 'Inactivo',
        cpuIrq: 'IRQ',
        cpuSoftirq: 'Soft IRQ',
        cpuSteal: 'Robado',
        cpuTop: 'Top 5 de Procesos por Uso de CPU',
        memTop: 'Top 5 de Procesos por Uso de Memoria',
        loadAverage: 'Promedio de carga en el último minuto | Promedio de carga en los últimos {n} minutos',
        load: 'Carga',
        mount: 'Punto de montaje',
        fileSystem: 'Sistema de archivos',
        total: 'Total',
        used: 'En uso',
        cache: 'Cache',
        free: 'Libre',
        shard: 'Fragmentado',
        available: 'Disponible',
        percent: 'Utilización',
        goInstall: 'Ir a instalar',
        networkCard: 'Tarjeta de red',
        disk: 'Disco',
    },
    tabs: {
        more: 'Más',
        hide: 'Ocultar',
        closeLeft: 'Cerrar izquierda',
        closeRight: 'Cerrar derecha',
        closeCurrent: 'Cerrar actual',
        closeOther: 'Cerrar otras',
        closeAll: 'Cerrar todo',
    },
    header: {
        logout: 'Cerrar sesión',
    },
    database: {
        manage: 'Administrar base de datos',
        deleteBackupHelper: 'Eliminar copias de seguridad de la base de datos simultáneamente',
        delete: 'La operación de eliminación no se puede revertir, por favor introduzca "',
        deleteHelper: '" para eliminar esta base de datos',
        create: 'Crear base de datos',
        noMysql: 'Servicio de base de datos (MySQL o MariaDB)',
        noPostgresql: 'Servicio de base de datos PostgreSQL',
        goUpgrade: 'Ir a actualizar',
        goInstall: 'Ir a instalar',
        isDelete: 'Eliminada',
        permission: 'Cambiar permisos',
        format: 'Juego de Caracteres',
        collation: 'Intercalación',
        collationHelper: 'Si está vacío, use la intercalación predeterminada del juego de caracteres {0}',
        permissionForIP: 'IP',
        permissionAll: 'Todos (%)',
        localhostHelper:
            'Configurar los permisos de la base de datos como "localhost" para el despliegue en contenedores impedirá el acceso externo al contenedor. ¡Por favor elija cuidadosamente!',
        databaseConnInfo: 'Ver información de conexión',
        rootPassword: 'Contraseña root',
        serviceName: 'Nombre del servicio',
        serviceNameHelper: 'Acceso entre contenedores en la misma red.',
        backupList: 'Respaldo',
        loadBackup: 'Importar',
        localUpload: 'Subida local',
        hostSelect: 'Server Selection',
        selectHelper: 'Estas seguro de importar el archivo de backup {0}?',
        remoteAccess: 'Acceso remoto',
        remoteHelper: 'Múltiples IP separadas por comas, ejemplo: 172.16.10.111, 172.16.10.112',
        remoteConnHelper:
            'Conectarse remotamente como usuario root en MySQL puede presentar riesgos de seguridad. Por lo tanto, realice esta operación con precaución.',
        changePassword: 'Cambiar contraseña',
        changeConnHelper: 'Esta operación modificará la base de datos actual {0}. ¿Desea continuar?',
        changePasswordHelper:
            'La base de datos ha sido asociada a una aplicación. Cambiar la contraseña también cambiará la contraseña de la base de datos en la aplicación. El cambio se aplica después de reiniciar la aplicación.',
        confChange: 'Configuración',
        confNotFound:
            'No se pudo encontrar el archivo de configuración. Por favor actualice la aplicación a la última versión en la tienda y vuelva a intentarlo.',
        portHelper:
            'Este puerto es el puerto expuesto del contenedor. Debe guardar la modificación por separado y reiniciar el contenedor.',
        loadFromRemote: 'Sincronizar desde el servidor',
        userBind: 'Vincular usuario',
        pgBindHelper:
            'Esta operación se utiliza para crear un nuevo usuario y vincularlo a la base de datos destino. Actualmente no se admite seleccionar usuarios ya existentes en la base de datos.',
        pgSuperUser: 'Superusuario',
        loadFromRemoteHelper:
            'Esto sincronizará la información de la base de datos del servidor a 1Panel. ¿Desea continuar?',
        passwordHelper: 'No se puede obtener, haga clic para modificar',
        remote: 'Remoto',
        remoteDB: 'Servidor remoto | Servidores remotos',
        manageRemoteDB: 'Administrar servidores remotos',
        createRemoteDB: 'Vincular @.lower:database.remoteDB',
        unBindRemoteDB: 'Desvincular @.lower:database.remoteDB',
        unBindForce: 'Forzar desvinculación',
        unBindForceHelper:
            'Ignorar todos los errores durante la desvinculación para asegurar que la operación final sea exitosa',
        unBindRemoteHelper:
            'Desvincular la base de datos remota solo eliminará la relación de vinculación y no eliminará directamente la base de datos remota',
        editRemoteDB: 'Editar servidor remoto',
        localDB: 'Base de datos local',
        address: 'Dirección de la base de datos',
        version: 'Versión de la base de datos',
        userHelper: 'El usuario root o un usuario con privilegios de root puede acceder a la base de datos remota.',
        pgUserHelper: 'Usuario de base de datos con privilegios de superusuario.',
        ssl: 'Usar SSL',
        clientKey: 'Clave privada del cliente',
        clientCert: 'Certificado del cliente',
        caCert: 'Certificado CA',
        hasCA: 'Posee certificado CA',
        skipVerify: 'Omitir la verificación de validez del certificado',
        initialDB: 'Base de Datos Inicial',

        formatHelper:
            'El conjunto de caracteres actual de la base de datos es {0}, la inconsistencia de conjuntos puede causar errores al recuperar',
        dropHelper: 'Puede arrastrar y soltar el archivo aquí o',
        clickHelper: 'hacer clic para subir',
        supportUpType:
            'Solo se admiten los formatos de archivo sql, sql.gz, tar.gz y .zip. El archivo comprimido importado debe contener solo un archivo .sql o incluir test.sql.',
        currentStatus: 'Estado actual',
        baseParam: 'Parámetro básico',
        performanceParam: 'Parámetro de rendimiento',
        runTime: 'Tiempo de inicio',
        connections: 'Total de conexiones',
        bytesSent: 'Bytes enviados',
        bytesReceived: 'Bytes recibidos',
        queryPerSecond: 'Consultas por segundo',
        txPerSecond: 'Tx por segundo',
        connInfo: 'Conexiones activas/pico',
        connInfoHelper: 'Si el valor es demasiado grande, aumente "max_connections".',
        threadCacheHit: 'Cache de hilos exitoso',
        threadCacheHitHelper: 'Si es muy bajo, aumente "thread_cache_size".',
        indexHit: 'Índice exitoso',
        indexHitHelper: 'Si es muy bajo, aumente "key_buffer_size".',
        innodbIndexHit: 'Tasa de aciertos del índice Innodb',
        innodbIndexHitHelper: 'Si es muy bajo, aumente "innodb_buffer_pool_size".',
        cacheHit: 'Aciertos en caché de consulta',
        cacheHitHelper: 'Si es muy bajo, aumente "query_cache_size".',
        tmpTableToDB: 'Tabla temporal en disco',
        tmpTableToDBHelper: 'Si es muy alto, intente aumentar "tmp_table_size".',
        openTables: 'Tablas abiertas',
        openTablesHelper: 'El valor de configuración de "table_open_cache" debe ser mayor o igual a este valor.',
        selectFullJoin: 'Seleccionar join completo',
        selectFullJoinHelper: 'Si el valor no es 0, verifique si el índice de la tabla es correcto.',
        selectRangeCheck: 'Uniones sin índice',
        selectRangeCheckHelper: 'Si el valor no es 0, verifique si el índice de la tabla es correcto.',
        sortMergePasses: 'Cantidad de merges ordenados',
        sortMergePassesHelper: 'Si es muy alto, aumente "sort_buffer_size".',
        tableLocksWaited: 'Bloqueos de tabla',
        tableLocksWaitedHelper: 'Si el valor es muy alto, considere mejorar el rendimiento de su base de datos.',
        performanceTuning: 'Ajuste de rendimiento',
        optimizationScheme: 'Esquema de optimización',
        keyBufferSizeHelper: 'Tamaño del buffer para índices',
        queryCacheSizeHelper: 'Caché de consulta. Si la función está deshabilitada, establezca este parámetro en 0.',
        tmpTableSizeHelper: 'Tamaño del caché de tabla temporal',
        innodbBufferPoolSizeHelper: 'Tamaño del buffer Innodb',
        innodbLogBufferSizeHelper: 'Tamaño del buffer de logs de Innodb',
        sortBufferSizeHelper: '* conexiones, tamaño del buffer de ordenamiento por hilo',
        readBufferSizeHelper: '* conexiones, tamaño del buffer de lectura',
        readRndBufferSizeHelper: '* conexiones, tamaño del buffer de lectura aleatoria',
        joinBufferSizeHelper: '* conexiones, tamaño del caché de asociación de tablas',
        threadStackelper: '* conexiones, tamaño de pila por hilo',
        binlogCacheSizeHelper: '* conexiones, caché del log binario (múltiplos de 4096)',
        threadCacheSizeHelper: 'Tamaño del pool de hilos',
        tableOpenCacheHelper: 'Caché de tablas',
        maxConnectionsHelper: 'Máximo de conexiones',
        restart: 'Reiniciar',
        slowLog: 'Registros lentos',
        noData: 'Aún no hay registros lentos.',
        isOn: 'Activado',
        longQueryTime: 'umbral(es)',
        thresholdRangeHelper: 'Por favor, introduzca el umbral correcto (1 - 600).',
        timeout: 'Tiempo de espera',
        timeoutHelper: 'Tiempo de espera de conexión inactiva. 0 indica que la conexión está siempre activa.',
        maxclients: 'Máximo de clientes',
        requirepassHelper:
            'Déjelo en blanco si no se ha establecido ninguna contraseña. Los cambios deben guardarse por separado y el contenedor debe reiniciarse.',
        databases: 'Cantidad de bases de datos',
        maxmemory: 'Uso máximo de memoria',
        maxmemoryHelper: '0 indica sin restricción.',
        tcpPort: 'Puerto de escucha actual.',
        uptimeInDays: 'Días en operación.',
        connectedClients: 'Cantidad de clientes conectados.',
        usedMemory: 'Uso de memoria actual de Redis.',
        usedMemoryRss: 'Tamaño de memoria solicitado al sistema operativo.',
        usedMemoryPeak: 'Pico de uso de memoria de Redis.',
        memFragmentationRatio: 'Ratio de fragmentación de memoria.',
        totalConnectionsReceived: 'Total de clientes conectados desde el inicio.',
        totalCommandsProcessed: 'Total de comandos ejecutados desde el inicio.',
        instantaneousOpsPerSec: 'Comandos ejecutados por el servidor por segundo.',
        keyspaceHits: 'Cantidad de veces que se encontró la clave de la base de datos.',
        keyspaceMisses: 'Cantidad de intentos fallidos para encontrar la clave.',
        hit: 'Proporción de aciertos de clave de la base de datos.',
        latestForkUsec: 'Microsegundos consumidos en la última operación fork().',
        redisCliHelper: 'No se detectó el servicio "redis-cli". Primero habilite el servicio.',
        redisQuickCmd: 'Comandos rápidos de Redis',
        recoverHelper: 'Esto sobrescribirá los datos con [{0}]. ¿Desea continuar?',
        submitIt: 'Sobrescribir los datos',
        baseConf: 'Básico',
        allConf: 'Todos',
        restartNow: 'Reiniciar ahora',
        restartNowHelper1:
            'Necesita reiniciar el sistema después de que los cambios de configuración tengan efecto. Si necesita persistir los datos, guarde antes de reiniciar.',
        restartNowHelper: 'Esto solo surtirá efecto después de reiniciar el sistema.',
        persistence: 'Persistencia',
        rdbHelper1: 'segundo(s), insertar',
        rdbHelper2: 'piezas de datos',
        rdbHelper3: 'Cumplir cualquiera de las condiciones activará la persistencia RDB.',
        rdbInfo: 'Asegúrese de que el valor de la regla esté entre 1 y 100000',

        containerConn: 'Conexión del contenedor',
        connAddress: 'Dirección',
        containerConnHelper:
            'Esta dirección de conexión es usada por aplicaciones en entorno de ejecución PHP o instalaciones en contenedores.',
        remoteConn: 'Conexión externa',
        remoteConnHelper2:
            'Esta dirección de conexión puede ser usada por aplicaciones fuera del contenedor o externas.',
        remoteConnHelper3:
            'La dirección de acceso predeterminada es la IP del host. Para modificarla, diríjase a la configuración de "Dirección de acceso predeterminada" en la página de ajustes del panel.',
        localIP: 'IP local',
    },
    aiTools: {
        model: {
            model: 'Modelo',
            create: 'Agregar modelo',
            create_helper: 'Descargar "{0}"',
            ollama_doc: 'Puede visitar el sitio oficial de Ollama para buscar y encontrar más modelos.',
            container_conn_helper: 'Utilice esta dirección para el acceso o conexión entre contenedores',
            ollama_sync:
                'Al sincronizar modelos de Ollama, se detectaron los siguientes modelos que no existen. ¿Desea eliminarlos?',
            from_remote: 'Este modelo no fue descargado vía 1Panel, no hay registros de descarga relacionados.',
            no_logs: 'Los registros de descarga de este modelo han sido eliminados y no se pueden consultar.',
        },
        proxy: {
            proxy: 'Mejoras de proxy de IA',
            proxyHelper1: 'Vincule un dominio y habilite HTTPS para mejorar la seguridad de la transmisión',
            proxyHelper2: 'Limite el acceso por IP para evitar exposición pública',
            proxyHelper3: 'Habilitar transmisión en tiempo real',
            proxyHelper4: 'Una vez creado, puede verlo y gestionarlo en la lista de sitios web',
            proxyHelper5:
                'Después de habilitarlo, puede deshabilitar el acceso externo al puerto en Tienda de Aplicaciones - Instaladas - Ollama - Parámetros para mejorar la seguridad.',
            proxyHelper6:
                'Para deshabilitar la configuración del proxy, puede eliminarla desde la lista de sitios web.',
            whiteListHelper: 'Restringir el acceso solo a las IP incluidas en la lista blanca',
        },
        gpu: {
            gpu: 'Monitoreo de GPU',
            gpuHelper: 'El sistema no detectó comandos NVIDIA-SMI o XPU-SMI. ¡Compruebe e inténtelo de nuevo!',
            process: 'Información del Proceso',
            type: 'Tipo',
            typeG: 'Gráficos',
            typeC: 'Cómputo',
            typeCG: 'Cómputo+Gráficos',
            processName: 'Nombre del Proceso',
            shr: 'Memoria Compartida',
            temperatureHelper: 'La alta temperatura de la GPU puede causar una reducción de la frecuencia de la GPU',
            gpuUtil: 'Utilización de GPU',
            temperature: 'Temperatura',
            performanceState: 'Estado de Rendimiento',
            powerUsage: 'Consumo de Energía',
            memoryUsage: 'Utilización de Memoria',
            fanSpeed: 'Velocidad del Ventilador',
            power: 'Energía',
            powerCurrent: 'Energía Actual',
            powerLimit: 'Límite de Energía',
            memory: 'Memoria',
            memoryUsed: 'Memoria Utilizada',
            memoryTotal: 'Memoria Total',
            percent: 'Utilización',
        },
        mcp: {
            server: 'Servidor MCP',
            create: 'Agregar servidor MCP',
            edit: 'Editar servidor MCP',
            baseUrl: 'Ruta de acceso externa',
            baseUrlHelper: 'Por ejemplo: http://192.168.1.2:8000',
            ssePath: 'Ruta SSE',
            ssePathHelper: 'Por ejemplo: /sse, asegúrese de que no se repita con otros servidores',
            environment: 'Variables de entorno',
            envKey: 'Nombre de la variable',
            envValue: 'Valor de la variable',
            externalUrl: 'Dirección de conexión externa',
            operatorHelper: 'Se realizará la operación {1} en {0}, ¿desea continuar?',
            domain: 'Dirección de acceso predeterminada',
            domainHelper: 'Por ejemplo: 192.168.1.1 o ejemplo.com',
            bindDomain: 'Vincular sitio web',
            commandPlaceHolder: 'Actualmente solo se admiten comandos de inicio npx y binarios',
            importMcpJson: 'Importar configuración del servidor MCP',
            importMcpJsonError: 'La estructura de mcpServers es incorrecta',
            bindDomainHelper:
                'Al vincular el sitio web, se modificará la dirección de acceso de todos los servidores MCP instalados y se cerrará el acceso externo a los puertos',
            outputTransport: 'Tipo de salida',
            streamableHttpPath: 'Ruta de transmisión',
            streamableHttpPathHelper:
                'Por ejemplo: /mcp, tenga en cuenta que no debe superponerse con otros servidores',
            npxHelper: 'Adecuado para mcp iniciado con npx o binario',
            uvxHelper: 'Adecuado para mcp iniciado con uvx',
        },
        tensorRT: {
            llm: 'TensorRT LLM',
            modelDir: 'Directorio del Modelo',
            commandHelper:
                'Si se necesita acceso externo, establezca el puerto en el comando para que sea el mismo que el puerto de la aplicación',
            imageAlert:
                'Debido al gran tamaño de la imagen, se recomienda descargar manualmente la imagen al servidor antes de la instalación',
            modelSpeedup: 'Habilitar aceleración de modelo',
            modelType: 'Tipo de modelo',
        },
    },
    container: {
        create: 'Crear',
        createByCommand: 'Crear por comando',
        commandInput: 'Introducir comando',
        commandRule: 'Por favor introduzca el comando correcto para crear el contenedor con docker run.',
        commandHelper: 'Este comando se ejecutará en el servidor para crear el contenedor. ¿Desea continuar?',
        edit: 'Editar contenedor',
        updateHelper1:
            'Se detectó que este contenedor proviene de la tienda de aplicaciones. Tenga en cuenta lo siguiente:',
        updateHelper2:
            '1. Las modificaciones actuales no se sincronizarán con las aplicaciones instaladas en la tienda.',
        updateHelper3:
            '2. Si modifica la aplicación en la página de instalados, el contenido editado actualmente quedará inválido.',
        updateHelper4:
            'Editar el contenedor requiere reconstruirlo y se perderán los datos no persistentes. ¿Desea continuar?',
        containerList: 'Lista de contenedores',
        operatorHelper: 'Se realizará {0} en el siguiente contenedor, ¿desea continuar?',
        operatorAppHelper:
            'La operación "{0}" se realizará en los siguientes contenedores y puede afectar los servicios en ejecución. ¿Desea continuar?',
        start: 'Iniciar',
        stop: 'Detener',
        restart: 'Reiniciar',
        kill: 'Finalizar',
        pause: 'Pausar',
        unpause: 'Reanudar',
        rename: 'Renombrar',
        remove: 'Eliminar',
        removeAll: 'Eliminar todos',
        containerPrune: 'Limpiar',
        containerPruneHelper1: 'Esto eliminará todos los contenedores que estén detenidos.',
        containerPruneHelper2:
            'Si los contenedores son de la tienda de aplicaciones, vaya a "Tienda de Aplicaciones -> Instaladas" y haga clic en "Reconstruir" para reinstalarlos después de la limpieza.',
        containerPruneHelper3: 'Esta operación no se puede deshacer. ¿Desea continuar?',
        imagePrune: 'Limpiar',
        imagePruneSome: 'Limpiar sin etiqueta',
        imagePruneSomeEmpty: 'No hay imágenes con la etiqueta "none" para limpiar.',
        imagePruneSomeHelper:
            'Limpia las imágenes con la etiqueta "none" que no estén siendo usadas por ningún contenedor.',
        imagePruneAll: 'Limpiar no usadas',
        imagePruneAllEmpty: 'No hay imágenes sin uso para limpiar.',
        imagePruneAllHelper: 'Limpia las imágenes que no estén siendo usadas por ningún contenedor.',
        networkPrune: 'Limpiar',
        networkPruneHelper: 'Esto eliminará todas las redes no utilizadas. ¿Desea continuar?',
        volumePrune: 'Limpiar',
        volumePruneHelper: 'Esto eliminará todos los volúmenes locales no utilizados. ¿Desea continuar?',
        cleanSuccess: 'La operación se completó correctamente, cantidad limpiada: {0}!',
        cleanSuccessWithSpace:
            'La operación se completó correctamente. El número de discos limpiados esta vez es {0}. El espacio liberado es {1}!',
        unExposedPort: 'La dirección de mapeo del puerto actual es 127.0.0.1, lo que impide el acceso externo.',
        upTime: 'Tiempo activo',
        fetch: 'Obtener',
        lines: 'Líneas',
        linesHelper: 'Por favor introduzca el número correcto de líneas de logs a recuperar.',
        lastDay: 'Último día',
        last4Hour: 'Últimas 4 horas',
        lastHour: 'Última hora',
        last10Min: 'Últimos 10 minutos',
        cleanLog: 'Limpiar logs',
        downLogHelper1: 'Esto descargará todos los logs del contenedor {0}. ¿Desea continuar?',
        downLogHelper2: 'Esto descargará los últimos {0} logs del contenedor {0}. ¿Desea continuar?',
        cleanLogHelper: 'Esto requerirá reiniciar el contenedor y no se puede deshacer. ¿Desea continuar?',
        newName: 'Nuevo nombre',
        workingDir: 'Directorio de trabajo',
        source: 'Uso de recursos',
        cpuUsage: 'Uso de CPU',
        cpuTotal: 'CPU total',
        core: 'Núcleo',
        memUsage: 'Uso de memoria',
        memTotal: 'Límite de memoria',
        memCache: 'Caché de memoria',
        loadSize: 'Obtener Tamaño del Contenedor',
        ip: 'Dirección IP',
        cpuShare: 'Proporción de CPU',
        cpuShareHelper:
            'El motor de contenedores usa un valor base de 1024 para la proporción de CPU. Puede aumentarlo para darle al contenedor más tiempo de CPU.',
        inputIpv4: 'Ejemplo: 192.168.1.1',
        inputIpv6: 'Ejemplo: 2001:0db8:85a3:0000:0000:8a2e:0370:7334',

        diskUsage: 'Uso del Disco',
        localVolume: 'Volumen de Almacenamiento Local',
        buildCache: 'Caché de Construcción',
        usage: 'Usado: {0}, Liberable: {1}',
        clean: 'Liberar',
        imageClean:
            'Limpiar imágenes eliminará todas las imágenes no utilizadas. Esta operación no se puede deshacer. ¿Continuar?',
        containerClean:
            'Limpiar contenedores eliminará todos los contenedores detenidos (incluidas las aplicaciones detenidas de la Tienda de Aplicaciones). Esta operación no se puede deshacer. ¿Continuar?',
        sizeRw: 'Tamaño de Capa de Contenedor',
        sizeRwHelper: 'Tamaño de la capa escribible exclusiva del contenedor',
        sizeRootFs: 'Tamaño Virtual',
        sizeRootFsHelper:
            'Tamaño total de todas las capas de imagen de las que depende el contenedor + capa del contenedor',

        containerFromAppHelper:
            'Se detectó que este contenedor proviene de la tienda de aplicaciones. Las operaciones sobre la app pueden invalidar los cambios actuales.',
        containerFromAppHelper1:
            'Haga clic en el botón [Parámetros] en la lista de aplicaciones instaladas para acceder a la página de edición y modificar el nombre del contenedor.',
        command: 'Comando',
        console: 'Interacción con el contenedor',
        tty: 'Asignar un pseudo-TTY (-t)',
        openStdin: 'Mantener STDIN abierto (-i)',
        custom: 'Personalizado',
        emptyUser: 'Si está vacío, iniciará sesión como predeterminado',
        privileged: 'Privilegiado',
        privilegedHelper:
            'Permite que el contenedor realice ciertas operaciones privilegiadas en el host, lo que puede aumentar los riesgos. ¡Úselo con precaución!',
        editComposeHelper:
            'Nota: Las variables de entorno se guardan en el archivo 1panel.env y deben ser referenciadas mediante env_file en compose.\nLas variables solo tienen efecto dentro del contenedor y no participan en la sustitución ${VAR} en el archivo compose.',
        upgradeHelper: 'Nombre de repositorio/imagen: versión de la imagen',
        upgradeWarning2:
            'La operación de actualización requiere reconstruir el contenedor, cualquier dato no persistente se perderá. ¿Desea continuar?',
        oldImage: 'Imagen actual',
        sameImageContainer: 'Contenedores de la misma imagen',
        sameImageHelper:
            'Los contenedores que usan la misma imagen pueden actualizarse en lote después de seleccionarlos',
        targetImage: 'Imagen objetivo',
        imageLoadErr: 'No se detectó un nombre de imagen para el contenedor',
        appHelper:
            'El contenedor proviene de la tienda de aplicaciones, y al actualizar podría hacer que el servicio no esté disponible.',
        resource: 'Recurso',
        input: 'Introducir manualmente',
        forcePull: 'Siempre descargar imagen',
        forcePullHelper:
            'Esto ignorará las imágenes existentes en el servidor y descargará la más reciente desde el repositorio.',
        server: 'Servidor',
        serverExample: '80, 80-88, ip:80 o ip:80-88',
        containerExample: '80 o 80-88',
        exposePort: 'Exponer puerto',
        exposeAll: 'Exponer todos',
        cmdHelper:
            'Ingrese un comando y presione Enter para continuar ingresando. Los comandos se pueden arrastrar para reordenar.',
        autoRemove: 'Eliminar automáticamente',
        cpuQuota: 'Cantidad de núcleos de CPU',
        memoryLimit: 'Memoria',
        limitHelper: 'Si se establece en 0, no hay limitación. El valor máximo es {0}',
        macAddr: 'Dirección MAC',
        mount: 'Montaje',
        volumeOption: 'Volumen',
        hostOption: 'Host',
        serverPath: 'Ruta en el servidor',
        containerDir: 'Ruta en el contenedor',
        volumeHelper: 'Asegúrese de que el contenido del volumen de almacenamiento sea correcto',
        networkEmptyHelper: 'Por favor confirme que la selección de red del contenedor es correcta',
        modeRW: 'RW',
        modeR: 'R',
        sharedLabel: 'Modo de Propagación',
        private: 'Privado',
        privateHelper: 'Los cambios de montaje en el contenedor y el host no se afectan mutuamente',
        rprivate: 'Privado Recursivo',
        rprivateHelper: 'Todos los montajes en el contenedor están completamente aislados del host',
        shared: 'Compartido',
        sharedHelper: 'Los cambios de montaje en el host y el contenedor son visibles entre sí',
        rshared: 'Compartido Recursivo',
        rsharedHelper: 'Todos los cambios de montaje en el host y el contenedor son visibles entre sí',
        slave: 'Esclavo',
        slaveHelper:
            'El contenedor puede ver los cambios de montaje del host, pero sus propios cambios no afectan al host',
        rslave: 'Esclavo Recursivo',
        rslaveHelper: 'Todos los montajes en el contenedor pueden ver los cambios del host, pero no afectan al host',
        mode: 'Modo',
        env: 'Entornos',
        restartPolicy: 'Política de reinicio',
        always: 'siempre',
        unlessStopped: 'a menos que se detenga',
        onFailure: 'al fallar (cinco veces por defecto)',
        no: 'nunca',
        refreshTime: 'Intervalo de actualización',
        cache: 'Caché',
        image: 'Imagen | Imágenes',
        imagePull: 'Descargar',
        imagePullHelper:
            'Admite seleccionar múltiples imágenes para descargar, presione Enter después de ingresar cada imagen para continuar',
        imagePush: 'Subir',
        imagePushHelper:
            'Detected that this image has multiple tags. Please confirm that the image name used for pushing is: {0}',
        imageDelete: 'Eliminar imagen',
        repoName: 'Repositorio de contenedores',
        imageName: 'Nombre de la imagen',
        pull: 'Descargar',
        path: 'Ruta',
        importImage: 'Importar',
        buildArgs: 'Argumentos de Construcción',
        imageBuild: 'Construir',
        pathSelect: 'Ruta',
        label: 'Etiqueta',
        imageTag: 'Etiqueta de imagen',
        imageTagHelper:
            'Admite configurar múltiples etiquetas de imagen, presione Enter después de ingresar cada etiqueta para continuar',
        push: 'Subir',
        fileName: 'Nombre de archivo',
        export: 'Exportar',
        exportImage: 'Exportar imagen',
        size: 'Tamaño',
        tag: 'Etiquetas',
        tagHelper: 'Una por línea. Por ejemplo,\nkey1=value1\nkey2=value2',
        imageNameHelper: 'Nombre de imagen y etiqueta, por ejemplo: nginx:latest',
        cleanBuildCache: 'Limpiar caché de compilación',
        delBuildCacheHelper:
            'Esto eliminará todos los artefactos almacenados en caché generados durante las compilaciones y no se puede deshacer. ¿Desea continuar?',
        urlWarning: 'El prefijo de la URL no debe incluir http:// o https://. Por favor modifique.',
        network: 'Red | Redes',
        networkHelper:
            'Esto puede causar que algunas aplicaciones o entornos no funcionen correctamente. ¿Desea continuar?',
        createNetwork: 'Crear',
        networkName: 'Nombre',
        driver: 'Driver',
        option: 'Opción',
        attachable: 'Adjuntable',
        parentNetworkCard: 'Tarjeta de Red Principal',
        subnet: 'Subred',
        scope: 'Rango de IP',
        gateway: 'Puerta de enlace',
        auxAddress: 'Excluir IP',
        volume: 'Volumen | Volúmenes',
        volumeDir: 'Directorio de volumen',
        nfsEnable: 'Habilitar almacenamiento NFS',
        nfsAddress: 'Dirección',
        mountpoint: 'Punto de montaje',
        mountpointNFSHelper: 'ej: /nfs, /nfs-share',
        options: 'Opciones',
        createVolume: 'Crear',
        repo: 'Repositorio de contenedores | Repositorios de contenedores',
        createRepo: 'Agregar',
        httpRepoHelper: 'Operar un repositorio tipo HTTP requiere reiniciar el servicio Docker.',
        httpRepo:
            'Elegir el protocolo HTTP requiere reiniciar el servicio Docker para agregarlo a los registros inseguros.',
        delInsecure: 'Eliminar registro inseguro',
        delInsecureHelper:
            'Esto reiniciará el servicio Docker para quitarlo de los registros inseguros. ¿Desea continuar?',
        downloadUrl: 'Servidor',
        imageRepo: 'Repositorio de imágenes',
        repoHelper: '¿Incluye un repositorio/organización/proyecto mirror?',
        auth: 'Requiere autenticación',
        mirrorHelper:
            'Si hay varios mirrors, deben estar en líneas separadas. Ejemplo:\nhttp://xxxxxx.m.daocloud.io\nhttps://xxxxxx.mirror.aliyuncs.com',
        registrieHelper:
            'Si existen varios repositorios privados, deben estar en líneas separadas. Ejemplo:\n172.16.10.111:8081\n172.16.10.112:8081',
        compose: 'Compose | Composes',
        fromChangeHelper: 'Cambiar la fuente limpiará el contenido actualmente editado. ¿Desea continuar?',
        composePathHelper: 'Ruta de guardado del archivo de configuración: {0}',
        composeHelper:
            'La composición creada mediante el editor o plantilla de 1Panel se guardará en el directorio {0}/docker/compose.',
        deleteFile: 'Eliminar archivo',
        deleteComposeHelper:
            'Elimina todos los archivos relacionados con la composición de contenedores, incluidos los archivos de configuración y los persistentes. ¡Proceda con precaución!',
        deleteCompose: '" Eliminar esta composición.',
        createCompose: 'Crear',
        composeDirectory: 'Directorio de compose',
        template: 'Plantilla',
        composeTemplate: 'Plantilla de compose | Plantillas de compose',
        createComposeTemplate: 'Crear',
        content: 'Contenido',
        contentEmpty: 'El contenido de Compose no puede estar vacío, por favor introduzca algo y vuelva a intentarlo.',
        containerNumber: 'Número de contenedores',
        containerStatus: 'Estado del contenedor',
        exited: 'Finalizado',
        running: 'En ejecución',
        composeDetailHelper:
            'La composición fue creada externamente a 1Panel. Las operaciones de inicio y detención no son compatibles.',
        composeOperatorHelper: 'La operación {1} se realizará en {0}. ¿Desea continuar?',
        composeDownHelper:
            'Esto detendrá y eliminará todos los contenedores y redes bajo la composición {0}. ¿Desea continuar?',
        setting: 'Configuración | Configuraciones',
        goSetting: 'Ir a editar',
        operatorStatusHelper: 'Esto "{0}" el servicio Docker. ¿Desea continuar?',
        dockerStatus: 'Servicio Docker',
        daemonJsonPathHelper:
            'Asegúrese de que la ruta de configuración sea la misma que la especificada en docker.service.',
        mirrors: 'Mirrors del registro',
        mirrorsHelper: '',
        mirrorsHelper2: 'Para más detalles, consulte la documentación oficial.',
        registries: 'Registros inseguros',
        ipv6Helper:
            'Al habilitar IPv6, necesita agregar una red de contenedores IPv6. Consulte la documentación oficial para pasos específicos de configuración.',
        ipv6CidrHelper: 'Rango de pool de direcciones IPv6 para contenedores',
        ipv6TablesHelper: 'Configuración automática de reglas iptables para Docker IPv6.',
        experimentalHelper:
            'Para habilitar ip6tables, debe activar esta configuración; de lo contrario, se ignorará ip6tables.',
        cutLog: 'Opción de logs',
        cutLogHelper1: 'La configuración actual solo afectará a los contenedores nuevos.',
        cutLogHelper2: 'Los contenedores existentes deben ser recreados para que la configuración surta efecto.',
        cutLogHelper3:
            'Tenga en cuenta que recrear los contenedores puede provocar la pérdida de datos. Si contienen información importante, realice una copia de seguridad antes de reconstruir.',
        maxSize: 'Tamaño máximo',
        maxFile: 'Archivo máximo',
        liveHelper:
            'Por defecto, cuando el demonio Docker termina, detiene los contenedores en ejecución. Puede configurar el demonio para que los contenedores sigan en ejecución si el demonio no está disponible. Esta función se llama "live restore" y ayuda a reducir el tiempo fuera de servicio por caídas, mantenimientos o actualizaciones.',
        liveWithSwarmHelper: 'La configuración live-restore es incompatible con el modo swarm.',
        iptablesDisable: 'Desactivar iptables',
        iptablesHelper1: 'Configuración automática de reglas iptables para Docker.',
        iptablesHelper2: 'Deshabilitar iptables impedirá que los contenedores se comuniquen con redes externas.',
        daemonJsonPath: 'Ruta de configuración',
        serviceUnavailable: 'El servicio Docker no está iniciado actualmente.',
        startIn: ' para iniciar',
        sockPath: 'Socket Unix',
        sockPathHelper: 'Canal de comunicación entre el demonio Docker y el cliente.',
        sockPathHelper1: 'Ruta predeterminada: /var/run/docker-x.sock',
        sockPathMsg:
            'Guardar la configuración del Socket puede dejar el servicio Docker fuera de servicio. ¿Desea continuar?',
        sockPathErr: 'Por favor seleccione o introduzca la ruta correcta del archivo Docker sock',
        related: 'Relacionado',
        includeAppstore: 'Mostrar contenedores de la tienda',
        excludeAppstore: 'Ocultar contenedores de la tienda',
        cleanDockerDiskZone: 'Limpiar el espacio en disco usado por Docker',
        cleanImagesHelper: '( Limpia todas las imágenes que no están siendo usadas por ningún contenedor )',
        cleanContainersHelper: '( Limpia todos los contenedores detenidos )',
        cleanVolumesHelper: '( Limpia todos los volúmenes locales no utilizados )',
        makeImage: 'Crear imagen',
        newImageName: 'Nuevo nombre de imagen',
        commitMessage: 'Mensaje de commit',
        author: 'Autor',
        ifPause: '¿Pausar el contenedor durante la creación?',
        ifMakeImageWithContainer: '¿Crear nueva imagen a partir de este contenedor?',
        finishTime: 'Hora de la última detención',
    },
    cronjob: {
        create: 'Crear tarea programada',
        edit: 'Editar tarea programada',
        importHelper:
            'Las tareas programadas duplicadas se omitirán automáticamente durante la importación. Las tareas se establecerán en estado [Deshabilitado] por defecto, y en estado [Pendiente de edición] cuando la asociación de datos sea anormal.',
        changeStatus: 'Cambiar estado',
        disableMsg: 'Esto detendrá la ejecución automática de la tarea programada. ¿Desea continuar?',
        enableMsg: 'Esto permitirá la ejecución automática de la tarea programada. ¿Desea continuar?',
        taskType: 'Tipo',
        nextTime: 'Próximas 5 ejecuciones',
        record: 'Registros',
        viewRecords: 'Ver registros',
        shell: 'Shell',
        stop: 'Detención Manual',
        stopHelper: 'Esta operación forzará la detención de la ejecución de la tarea actual. ¿Continuar?',
        log: 'Registros de respaldo',
        logHelper: 'Registro del sistema de copias de seguridad',
        ogHelper1: '1. Registro del sistema de 1Panel',
        logHelper2: '2. Registro de inicio de sesión SSH del servidor',
        logHelper3: '3. Todos los registros del sitio web',
        containerCheckBox: 'En contenedor (no necesita introducir el comando del contenedor)',
        containerName: 'Nombre del contenedor',
        ntp: 'Sincronización horaria',
        ntp_helper: 'Puede configurar el servidor NTP en la página de Configuración Rápida de la Caja de Herramientas.',
        app: 'Respaldo de aplicación',
        website: 'Respaldo de sitio web',
        rulesHelper:
            'Si hay varias reglas de exclusión de compresión, deben estar en líneas separadas. Ejemplo:\n*.log\n*.sql',
        lastRecordTime: 'Hora de la última ejecución',
        all: 'Todos',
        failedRecord: 'Registros fallidos',
        successRecord: 'Registros completados correctamente',
        database: 'Respaldo de base de datos',
        missBackupAccount: 'No se pudo encontrar la cuenta de respaldo',
        syncDate: 'Hora de sincronización',
        clean: 'Limpiar caché',
        curl: 'Acceder a URL',
        taskName: 'Nombre',
        cronSpec: 'Ciclo de ejecución',
        cronSpecDoc:
            'Custom execution cycles only support the [minute hour day month week] format, e.g., 0 0 * * *. For details, please refer to the official documentation.',
        cronSpecHelper: 'Introduzca el periodo de ejecución correcto',
        cleanHelper:
            'Esta operación registra todos los registros de ejecución de tareas, archivos de respaldo y archivos de registro. ¿Desea continuar?',
        backupContent: 'Contenido de respaldo',
        directory: 'Directorio de respaldo',
        sourceDir: 'Directorio de respaldo',
        snapshot: 'Instantánea del sistema',
        allOptionHelper: `El plan actual es respaldar todos los [{0}]. La descarga directa no está soportada por ahora. Puede consultar la lista de respaldos en el menú [{0}].`,
        exclusionRules: 'Reglas de exclusión',
        exclusionRulesHelper:
            'Seleccione o ingrese reglas de exclusión, presione Enter después de cada conjunto para continuar. Las reglas de exclusión se aplicarán a todas las operaciones de compresión en esta copia de seguridad',
        default_download_path: 'Enlace de descarga predeterminado',
        saveLocal: 'Retener respaldos locales (igual al número de copias en la nube)',
        url: 'Dirección URL',
        urlHelper: 'Por favor ingrese una dirección URL válida',
        targetHelper: 'Las cuentas de respaldo se gestionan en los ajustes del panel.',
        withImageHelper:
            'Respalda imágenes de la tienda de aplicaciones, pero esto aumentará el tamaño del archivo de la instantánea.',
        ignoreApp: 'Excluir aplicaciones',
        withImage: 'Copia de Seguridad de la Imagen de la Aplicación',
        retainCopies: 'Retener registros',
        retryTimes: 'Intentos de reintento',
        timeout: 'Tiempo de espera',
        ignoreErr: 'Ignorar errores',
        ignoreErrHelper: 'Ignora los errores durante el respaldo para asegurar que todas las tareas se completen',
        retryTimesHelper: '0 significa que no habrá reintentos tras un fallo',
        retainCopiesHelper: 'Número de copias a retener para registros y logs de ejecución',
        retainCopiesHelper1: 'Número de copias a retener para los archivos de respaldo',
        retainCopiesUnit: ' copias (Ver)',
        cronSpecRule:
            'El formato del periodo de ejecución en la línea {0} es incorrecto. ¡Por favor verifique e intente nuevamente!',
        cronSpecRule2: 'El formato del periodo de ejecución es incorrecto, por favor verifique e intente nuevamente.',
        perMonthHelper: 'Ejecutar el día {0} de cada mes a las {1}:{2}',
        perWeekHelper: 'Ejecutar cada semana el {0} a las {1}:{2}',
        perDayHelper: 'Ejecutar todos los días a las {0}:{1}',
        perHourHelper: 'Ejecutar cada hora en el minuto {0}',
        perNDayHelper: 'Ejecutar cada {0} días a las {1}:{2}',
        perNHourHelper: 'Ejecutar cada {0} horas en el minuto {1}',
        perNMinuteHelper: 'Ejecutar cada {0} minutos',
        perNSecondHelper: 'Ejecutar cada {0} segundos',
        perMonth: 'Cada mes',
        perWeek: 'Cada semana',
        perHour: 'Cada hora',
        perNDay: 'Cada N días',
        perDay: 'Cada día',
        perNHour: 'Cada N horas',
        perNMinute: 'Cada N minutos',
        perNSecond: 'Cada N segundos',
        day: 'día(s)',
        monday: 'Lunes',
        tuesday: 'Martes',
        wednesday: 'Miércoles',
        thursday: 'Jueves',
        friday: 'Viernes',
        saturday: 'Sábado',
        sunday: 'Domingo',
        shellContent: 'Script',
        executor: 'Ejecutor',
        errRecord: 'Registro incorrecto',
        errHandle: 'Fallo en la ejecución de la tarea programada',
        noRecord: 'Al activar la tarea programada, verá aquí los registros.',
        cleanData: 'Limpiar datos',
        cleanRemoteData: 'Eliminar datos remotos',
        cleanDataHelper: 'Elimina el archivo de respaldo generado por esta tarea.',
        noLogs: 'Aún no hay salida de tareas...',
        errPath: '¡Error en la ruta de respaldo [{0}], no se puede descargar!',
        cutWebsiteLog: 'Rotación de logs del sitio',
        cutWebsiteLogHelper: 'Los archivos de log rotados se respaldarán en el directorio de respaldos de 1Panel.',
        syncIpGroup: 'Sincronizar grupos de IP de WAF',

        requestExpirationTime: 'Tiempo de expiración de solicitud de subida (Horas)',
        unitHours: 'Unidad: Horas',
        alertTitle: 'Tarea programada - {0} 「{1}」 Alerta de fallo',
        library: {
            script: 'Script',
            syncNow: 'Sincronizar Ahora',
            turnOnSync: 'Activar Sincronización Automática',
            turnOnSyncHelper:
                'Activar la sincronización automática realizará sincronizaciones automáticas durante las primeras horas de la madrugada diariamente',
            turnOffSync: 'Desactivar Sincronización Automática',
            turnOffSyncHelper:
                'Desactivar la sincronización automática puede causar retrasos en la sincronización de scripts, ¿confirmar?',
            isInteractive: 'Interactivo',
            interactive: 'Script interactivo',
            interactiveHelper:
                'Requiere introducir datos durante la ejecución y no puede ser usada en tareas programadas.',
            library: 'Librería de scripts',
            create: 'Agregar script',
            edit: 'Editar script',
            groupHelper:
                'Establezca diferentes grupos según las características de los scripts, esto facilita el filtrado.',
            handleHelper: 'Ejecutar el script {1} en {0}, ¿desea continuar?',
            noSuchApp: 'No se detectó el servicio {0}. ¡Por favor instálelo desde la librería de scripts!',
            syncHelper:
                'Se va a sincronizar la librería de scripts del sistema. Solo afecta a los scripts del sistema. ¿Desea continuar?',
        },
    },
    monitor: {
        globalFilter: 'Filtro Global',
        enableMonitor: 'Estado de Monitoreo',
        storeDays: 'Días de Retención',
        defaultNetwork: 'Tarjeta de Red Predeterminada',
        defaultNetworkHelper:
            'Opción de tarjeta de red predeterminada mostrada en las interfaces de monitoreo y resumen',
        defaultIO: 'Disco Predeterminado',
        defaultIOHelper: 'Opción de disco predeterminada mostrada en las interfaces de monitoreo y resumen',
        cleanMonitor: 'Limpiar Registros de Monitoreo',
        cleanHelper: 'Esta operación borrará todos los registros de monitoreo, incluidos los de GPU. ¿Continuar?',

        avgLoad: 'Carga promedio',
        loadDetail: 'Detalle de carga',
        resourceUsage: 'Utilización',
        networkCard: 'Interfaz de red',
        read: 'Lectura',
        write: 'Escritura',
        readWriteCount: 'Operaciones de E/S',
        readWriteTime: 'Latencia de E/S',
        today: 'Hoy',
        yesterday: 'Ayer',
        lastNDay: 'Últimos {0} días',
        lastNMonth: 'Últimos {0} meses',
        lastHalfYear: 'Último semestre',
        memory: 'Memoria',
        percent: 'Porcentaje',
        cache: 'Caché',
        disk: 'Disco',
        network: 'Red',
        up: 'Subida',
        down: 'Bajada',
        interval: 'Intervalo de Recolección',
        intervalHelper: 'Ingrese un intervalo de recolección de monitoreo apropiado (5 segundos - 12 horas)',
    },
    terminal: {
        local: 'Local',
        defaultConn: 'Conexión predeterminada',
        defaultConnHelper:
            'Esta operación conectará automáticamente al terminal del nodo después de abrir el terminal para 【{0}】. ¿Continuar?',
        localConnJump:
            'La información de conexión predeterminada se mantiene en [Terminal - Configuración]. Si la conexión falla, ¡edite allí!',
        localHelper: 'El nombre `local` se utiliza solo para identificación interna del sistema',
        connLocalErr:
            'No se puede autenticar automáticamente, por favor introduzca la información de inicio de sesión del servidor local.',
        testConn: 'Probar conexión',
        saveAndConn: 'Guardar y conectar',
        connTestOk: 'La información de conexión es válida',
        connTestFailed: 'Conexión no disponible, por favor revise la información de conexión.',
        host: 'Host | Hosts',
        createConn: 'Nueva conexión',
        noHost: 'Sin host',
        groupChange: 'Cambiar grupo',
        expand: 'Expandir todo',
        fold: 'Contraer todo',
        batchInput: 'Procesamiento por lotes',
        quickCommand: 'Comando rápido | Comandos rápidos',
        noSuchCommand:
            'No se encontraron datos de comandos rápidos en el archivo CSV importado, ¡compruebe e inténtelo de nuevo!',
        quickCommandHelper: 'Puede usar comandos rápidos en la parte inferior de "Terminales -> Terminales".',
        groupDeleteHelper:
            'Después de eliminar el grupo, todas las conexiones pasarán al grupo predeterminado. ¿Desea continuar?',
        command: 'Comando',
        quickCmd: 'Comando rápido',
        addHost: 'Agregar',
        localhost: 'Localhost',
        ip: 'Dirección',
        authMode: 'Autenticación',
        passwordMode: 'Contraseña',
        rememberPassword: 'Recordar autenticación',
        keyMode: 'Clave privada',
        key: 'Clave privada',
        keyPassword: 'Contraseña de la clave privada',
        emptyTerminal: 'No hay ninguna terminal conectada actualmente.',
        lineHeight: 'Altura de línea',
        letterSpacing: 'Espaciado de letras',
        fontSize: 'Tamaño de fuente',
        cursorBlink: 'Parpadeo del cursor',
        cursorStyle: 'Estilo de cursor',
        cursorUnderline: 'Subrayado',
        cursorBlock: 'Bloque',
        cursorBar: 'Barra',
        scrollback: 'Scrollback',
        scrollSensitivity: 'Sensibilidad de scroll',
        saveHelper: '¿Está seguro de que desea guardar la configuración actual de la terminal?',
    },
    toolbox: {
        common: {
            toolboxHelper: 'Para dudas de instalación y uso, consulte',
        },
        swap: {
            swap: 'Partición Swap',
            swapHelper1: 'El tamaño de swap debe ser de 1 a 2 veces la memoria física, ajustable según necesidades.',
            swapHelper2:
                'Antes de crear un archivo swap, asegúrese de que el disco tenga espacio suficiente, ya que el archivo ocupará ese espacio.',
            swapHelper3:
                'El swap ayuda a aliviar la presión de memoria, pero es solo un suplemento. Un uso excesivo puede afectar el rendimiento. Se recomienda aumentar memoria o optimizar el uso.',
            swapHelper4: 'Se recomienda monitorear regularmente el uso de swap para asegurar el funcionamiento normal.',
            swapDeleteHelper:
                'Esta operación eliminará la partición Swap {0}. Por seguridad, el archivo no se borrará automáticamente. Si requiere borrarlo, hágalo manualmente.',
            saveHelper: '¡Por favor guarde primero la configuración!',
            saveSwap: 'Guardar la configuración ajustará la partición Swap {0} a {1}. ¿Desea continuar?',
            swapMin: 'El tamaño mínimo es de 40 KB. ¡Por favor modifique y vuelva a intentar!',
            swapMax: 'El tamaño máximo es {0}. ¡Por favor modifique y vuelva a intentar!',
            swapOff: 'El tamaño mínimo es de 40 KB. Si lo pone en 0, desactivará la partición Swap.',
        },
        device: {
            dnsHelper: 'Servidor DNS',
            dnsAlert: '¡Atención! Modificar el archivo /etc/resolv.conf lo restaurará tras reiniciar el sistema.',
            dnsHelper1: 'Si hay varios DNS, deben ir en líneas nuevas. Ejemplo:\n114.114.114.114\n8.8.8.8',
            hostsHelper: 'Resolución de host',
            hosts: 'Dominio',
            hostAlert: 'Registros comentados ocultos, haga clic en Configuración completa para verlos o modificarlos.',
            toolbox: 'Configuraciones rápidas',
            hostname: 'Nombre del host',
            passwd: 'Contraseña del sistema',
            passwdHelper: 'Los caracteres no pueden incluir $ y &',
            timeZone: 'Zona horaria del sistema',
            localTime: 'Hora del servidor',
            timeZoneChangeHelper: 'Cambiar la zona horaria requiere reiniciar el servicio. ¿Continuar?',
            timeZoneHelper:
                'Si no tiene instalado "timedatectl", no podrá cambiar la zona horaria porque el sistema lo usa.',
            timeZoneCN: 'Beijing',
            timeZoneAM: 'Los Ángeles',
            timeZoneNY: 'Nueva York',
            ntpALi: 'Alibaba',
            ntpGoogle: 'Google',
            syncSite: 'Servidor NTP',
            hostnameHelper: 'El cambio de nombre depende de "hostnamectl". Si no está instalado, podría fallar.',
            userHelper: 'El nombre de usuario depende de "whoami". Si no está instalado, podría fallar.',
            passwordHelper: 'El cambio de contraseña depende de "chpasswd". Si no está instalado, podría fallar.',
            hostHelper: 'Hay un valor vacío en el contenido. Por favor, revise y modifique.',
            dnsCheck: 'Probar disponibilidad',
            dnsOK: '¡La configuración DNS es válida!',
            dnsTestFailed: 'La configuración DNS no es válida.',
        },
        fail2ban: {
            sshPort: 'Puerto SSH',
            sshPortHelper: 'Fail2ban escucha el puerto SSH del host',
            unActive: 'El servicio Fail2ban no está habilitado actualmente.',
            operation: 'Va a realizar la operación "{0}" en Fail2ban. ¿Desea continuar?',
            fail2banChange: 'Modificación de configuración de Fail2ban',
            ignoreHelper: 'La lista de IPs permitidas será ignorada para el bloqueo. ¿Desea continuar?',
            bannedHelper: 'La lista de IPs bloqueadas será bloqueada por el servidor. ¿Desea continuar?',
            maxRetry: 'Intentos máximos',
            banTime: 'Tiempo de bloqueo',
            banTimeHelper: 'El tiempo por defecto es 10 minutos, -1 es bloqueo permanente',
            banTimeRule: 'Por favor, introduzca un tiempo válido o -1',
            banAllTime: 'Bloqueo permanente',
            findTime: 'Periodo de detección',
            banAction: 'Acción de bloqueo',
            banActionOption: 'Bloquear las IP especificadas usando {0}',
            allPorts: ' (Todos los puertos)',
            ignoreIP: 'Lista blanca de IP',
            bannedIP: 'Lista negra de IP',
            logPath: 'Ruta del log',
            logPathHelper: 'Por defecto /var/log/secure o /var/log/auth.log',
        },
        ftp: {
            ftp: 'Cuenta FTP | Cuentas FTP',
            notStart: 'El servicio FTP no está iniciado, ¡inícielo primero!',
            operation: 'Se realizará la operación "{0}" en el servicio FTP. ¿Desea continuar?',
            noPasswdMsg: 'No se pudo obtener la contraseña actual de la cuenta FTP, ¡asigne una y vuelva a intentar!',
            enableHelper: 'Habilitar la cuenta FTP restaurará los permisos de acceso. ¿Desea continuar?',
            disableHelper: 'Deshabilitar la cuenta FTP revocará los permisos de acceso. ¿Desea continuar?',
            syncHelper: 'Sincronizar datos de cuentas FTP entre servidor y base de datos. ¿Desea continuar?',
            dirSystem:
                'Este directorio es reservado por el sistema. Modificarlo podría causar errores. ¡Modifíquelo con cuidado!',
            dirHelper: 'Habilitar FTP requiere cambios en los permisos de directorio - elija cuidadosamente',
            dirMsg: 'Habilitar FTP modificará los permisos de todo el directorio {0}. ¿Desea continuar?',
        },
        clam: {
            clam: 'Escaneo de virus',
            cron: 'Escaneo programado',
            cronHelper: 'La versión profesional soporta el escaneo programado',
            specErr: 'Formato de horario incorrecto, ¡verifique e intente nuevamente!',
            disableMsg:
                'Detener la ejecución programada impedirá que esta tarea se ejecute automáticamente. ¿Desea continuar?',
            enableMsg:
                'Habilitar la ejecución programada permitirá que esta tarea se ejecute automáticamente. ¿Desea continuar?',
            showFresh: 'Mostrar servicio de actualización de firmas',
            hideFresh: 'Ocultar servicio de actualización de firmas',
            clamHelper:
                'La configuración recomendada para ClamAV es: al menos 3 GiB de RAM, CPU de un núcleo a 2.0 GHz o más, y al menos 5 GiB de disco disponible.',
            notStart: 'El servicio ClamAV no está iniciado, ¡inícielo primero!',
            removeRecord: 'Eliminar archivos de informe',
            noRecords: 'Haga clic en "Ejecutar" para iniciar el escaneo y aquí verá los registros.',
            removeInfected: 'Eliminar archivos infectados',
            removeInfectedHelper:
                'Elimina los archivos infectados detectados durante la tarea para asegurar el servidor.',
            clamCreate: 'Crear regla de escaneo',
            infectedStrategy: 'Estrategia para infectados',
            removeHelper: 'Eliminar archivos infectados, ¡elija cuidadosamente!',
            move: 'Mover',
            moveHelper: 'Mover archivos infectados a un directorio específico',
            copyHelper: 'Copiar archivos infectados a un directorio específico',
            none: 'No hacer nada',
            noneHelper: 'No realizar acciones sobre los archivos infectados',
            scanDir: 'Directorio a escanear',
            infectedDir: 'Directorio de infectados',
            scanDate: 'Fecha de escaneo',
            scanResult: 'Cola de logs de escaneo',
            tail: 'Líneas',
            infectedFiles: 'Archivos infectados',
            log: 'Detalles',
            clamConf: 'Clam AV daemon',
            clamLog: '@:toolbox.clam.clamConf logs',
            freshClam: 'FreshClam',
            freshClamLog: '@:toolbox.clam.freshClam logs',
            alertHelper: 'La versión profesional soporta escaneo programado y alertas por SMS',
            alertTitle: 'La tarea de escaneo de virus 「{0}」 detectó archivos infectados',
        },
    },
    logs: {
        core: 'Servicio del panel',
        agent: 'Monitoreo de nodo',
        panelLog: 'Logs del panel',
        operation: 'Logs de operación',
        login: 'Logs de acceso',
        loginIP: 'IP de acceso',
        loginAddress: 'Dirección de acceso',
        loginAgent: 'Agente de acceso',
        loginStatus: 'Estado',
        system: 'Logs del sistema',
        deleteLogs: 'Limpiar logs',
        resource: 'Recurso',
        detail: {
            dashboard: 'Resumen general',
            ai: 'IA',
            groups: 'Grupo',
            hosts: 'Host',
            apps: 'Aplicación',
            websites: 'Sitio web',
            containers: 'Contenedor',
            files: 'Archivo',
            runtimes: 'Runtime',
            process: 'Proceso',
            toolbox: 'Caja de herramientas',
            backups: 'Respaldo / Restaurar',
            tampers: 'Antimanipulación',
            xsetting: 'Configuración de interfaz',
            logs: 'Log',
            settings: 'Configuración',
            cronjobs: 'Tarea programada',
            databases: 'Base de datos',
            waf: 'WAF',
            licenses: 'Licencia',
            nodes: 'Nodo',
            commands: 'Comandos rápidos',
        },
        websiteLog: 'Logs de sitio web',
        runLog: 'Logs de ejecución',
        errLog: 'Logs de errores',
        task: 'Log de tareas',
        taskName: 'Nombre de la tarea',
        taskRunning: 'En ejecución',
    },
    file: {
        fileDirNum: '{0} directorios, {1} archivos,',
        currentDir: 'Directorio',
        dir: 'Carpeta',
        fileName: 'Nombre del archivo',
        search: 'Buscar',
        mode: 'Permisos',
        editPermissions: 'Editar @.lower:file.mode',
        owner: 'Propietario',
        file: 'Archivo',
        remoteFile: 'Descargar de remoto',
        share: 'Compartir',
        sync: 'Sincronización de datos',
        size: 'Tamaño',
        updateTime: 'Modificado',
        rename: 'Renombrar',
        role: 'Permisos',
        info: 'Ver atributos',
        linkFile: 'Enlace simbólico',
        shareList: 'Lista de compartidos',
        zip: 'Comprimido',
        group: 'Grupo',
        path: 'Ruta',
        public: 'Otros',
        setRole: 'Asignar permisos',
        link: 'Enlace de archivo',
        rRole: 'Lectura',
        wRole: 'Escritura',
        xRole: 'Ejecutable',
        name: 'Nombre',
        compress: 'Comprimir',
        deCompress: 'Descomprimir',
        compressType: 'Formato de compresión',
        compressDst: 'Ruta de compresión',
        replace: 'Sobrescribir archivos existentes',
        compressSuccess: 'Compresión completada correctamente',
        deCompressSuccess: 'Descompresión completada correctamente',
        deCompressDst: 'Ruta de descompresión',
        linkType: 'Tipo de enlace',
        softLink: 'Enlace simbólico',
        hardLink: 'Enlace físico',
        linkPath: 'Ruta del enlace',
        selectFile: 'Seleccionar archivo',
        downloadUrl: 'URL remota',
        downloadStart: 'Descarga iniciada',
        moveSuccess: 'Movido correctamente',
        copySuccess: 'Copiado correctamente',
        pasteMsg: 'Por favor haz clic en el botón [Pegar] en la parte superior derecha del directorio de destino',
        move: 'Mover',
        calculate: 'Calcular',
        canNotDeCompress: 'No se puede descomprimir este archivo',
        uploadSuccess: 'Carga completada correctamente',
        downloadProcess: 'Progreso de descarga',
        downloading: 'Descargando...',
        infoDetail: 'Propiedades del archivo',
        root: 'Directorio raíz',
        list: 'Lista de archivos',
        sub: 'Incluir subdirectorios',
        downloadSuccess: 'Descarga completada correctamente',
        theme: 'Tema',
        language: 'Idioma',
        eol: 'Fin de línea',
        copyDir: 'Copiar',
        paste: 'Pegar',
        changeOwner: 'Modificar usuario y grupo',
        containSub: 'Aplicar cambio de permisos recursivamente',
        ownerHelper:
            'El usuario predeterminado del entorno PHP: el grupo es 1000:1000, es normal que haya diferencias entre usuario dentro y fuera del contenedor',
        searchHelper: 'Soporta comodines como *',
        uploadFailed: '[{0}] Fallo en la carga del archivo',
        fileUploadStart: 'Cargando [{0}]....',
        currentSelect: 'Seleccionado: ',
        unsupportedType: 'Tipo de archivo no soportado',
        deleteHelper: '¿Está seguro de eliminar los siguientes archivos? Por defecto irán a la papelera de reciclaje.',
        fileHelper:
            'Nota:\n1. Los resultados de búsqueda no pueden ordenarse.\n2. Las carpetas no pueden ordenarse por tamaño.',
        forceDeleteHelper: 'Eliminar permanentemente el archivo (sin pasar por la papelera, lo elimina directamente)',
        recycleBin: 'Papelera',
        sourcePath: 'Ruta original',
        deleteTime: 'Hora de eliminación',
        confirmReduce: '¿Desea restaurar los siguientes archivos?',
        reduceSuccess: 'Restauración completada correctamente',
        reduce: 'Restaurar',
        reduceHelper:
            'Si hay un archivo o directorio con el mismo nombre en la ruta original, será sobrescrito. ¿Desea continuar?',
        clearRecycleBin: 'Vaciar',
        clearRecycleBinHelper: '¿Desea vaciar la papelera?',
        favorite: 'Favoritos',
        removeFavorite: '¿Eliminar de favoritos?',
        addFavorite: 'Agregar/Quitar de favoritos',
        clearList: 'Limpiar lista',
        deleteRecycleHelper: '¿Está seguro de eliminar permanentemente los siguientes archivos?',
        typeErrOrEmpty: 'El archivo [{0}] es de tipo incorrecto o carpeta vacía',
        dropHelper: 'Arrastre aquí los archivos que desea cargar',
        fileRecycleBin: 'Habilitar papelera de reciclaje',
        fileRecycleBinMsg: '{0} papelera',
        wordWrap: 'Ajuste de línea',
        deleteHelper2: '¿Está seguro de eliminar el archivo seleccionado? No se puede deshacer.',
        ignoreCertificate: 'Permitir conexiones inseguras',
        ignoreCertificateHelper:
            'Permitir conexiones inseguras puede provocar fugas o alteraciones de datos. Úselo solo si confía en la fuente.',
        uploadOverLimit: '¡El número de archivos supera los 1000! Por favor, comprima y cargue',
        clashDitNotSupport: 'Los nombres de archivo no pueden contener .1panel_clash',
        clashDeleteAlert: 'No se puede eliminar la carpeta "Papelera"',
        clashOpenAlert: 'Haga clic en "Papelera" para abrir la carpeta de papelera',
        right: 'Adelante',
        back: 'Atrás',
        top: 'Volver arriba',
        up: 'Subir',
        openWithVscode: 'Abrir con VS Code',
        vscodeHelper: 'Asegúrese de tener instalado VS Code y configurado el plugin SSH Remote',
        saveContentAndClose: 'El archivo se ha modificado, ¿desea guardar y cerrar?',
        saveAndOpenNewFile: 'El archivo se ha modificado, ¿desea guardar y abrir el nuevo archivo?',
        noEdit: 'El archivo no ha sido modificado, ¡no es necesario hacer esto!',
        noNameFolder: 'Carpeta sin nombre',
        noNameFile: 'Archivo sin nombre',
        minimap: 'Mapa de código',
        fileCanNotRead: 'No se puede leer el archivo',
        panelInstallDir: 'El directorio de instalación de 1Panel no puede eliminarse',
        wgetTask: 'Tarea de descarga',
        existFileTitle: 'Archivo con el mismo nombre',
        existFileHelper: 'El archivo cargado contiene un archivo con el mismo nombre, ¿desea sobrescribirlo?',
        existFileSize: 'Tamaño del archivo (nuevo -> viejo)',
        existFileDirHelper: 'El archivo o carpeta seleccionado tiene nombre duplicado. ¡Proceda con precaución!\n',
        coverDirHelper: '¡Las carpetas seleccionadas para reemplazo se copiarán en la ruta de destino!',
        noSuchFile: 'No se encontró el archivo o directorio. Por favor verifique e intente de nuevo.',
        setting: 'Configuración',
        showHide: 'Mostrar archivos ocultos',
        noShowHide: 'No mostrar archivos ocultos',
        cancelUpload: 'Cancelar carga',
        cancelUploadHelper: 'Indica si se cancela la carga; después de la cancelación, la lista de cargas se borrará.',
        keepOneTab: 'Mantener al menos una pestaña',
        notCanTab: 'No se pueden añadir más pestañas',
        convert: 'Convertir Formato',
        converting: 'Convirtiendo',
        fileCanNotConvert: 'Este archivo no admite conversión de formato',
        formatType: 'Tipo de Formato',
        sourceFormat: 'Formato de Origen',
        sourceFile: 'Archivo de Origen',
        saveDir: 'Directorio de Guardado',
        deleteSourceFile: 'Eliminar Archivo de Origen',
        convertHelper: 'Convertir los archivos seleccionados a otro formato',
        convertHelper1: 'Por favor, seleccione los archivos a convertir',
        execConvert: 'Iniciar conversión. Puede ver los registros de conversión en el Centro de Tareas',
        convertLogs: 'Registros de Conversión',
        formatConvert: 'Conversión de Formato',
    },
    ssh: {
        autoStart: 'Inicio automático',
        enable: 'Habilitar inicio automático',
        disable: 'Deshabilitar inicio automático',
        sshAlert:
            'La lista se ordena por fecha de inicio de sesión. Cambiar la zona horaria u otras operaciones pueden afectar las fechas.',
        sshAlert2:
            'Puede usar "Fail2ban" en "Caja de Herramientas" para bloquear IPs que intentan ataques de fuerza bruta y así mejorar la seguridad.',
        sshOperate: 'Se realizará la operación "{0}" en el servicio SSH. ¿Desea continuar?',
        sshChange: 'Configuración SSH',
        sshChangeHelper: 'Esta acción cambió "{0}" a "{1}". ¿Desea continuar?',
        sshFileChangeHelper:
            'Modificar el archivo de configuración puede afectar la disponibilidad del servicio. Ejecute esta acción con precaución. ¿Desea continuar?',
        port: 'Puerto',
        portHelper: 'Especifique el puerto en el que escucha el servicio SSH.',
        listenAddress: 'Dirección de escucha',
        allV4V6: '0.0.0.0:{0}(IPv4) y :::{0}(IPv6)',
        listenHelper: 'Si deja ambos campos en blanco, escuchará en "0.0.0.0:{0}(IPv4)" y ":::{0}(IPv6)".',
        addressHelper: 'Especifique la dirección en la que escucha el servicio SSH.',
        permitRootLogin: 'Permitir inicio de sesión root',
        rootSettingHelper: 'El método predeterminado para root es "Permitir inicio de sesión SSH".',
        rootHelper1: 'Permitir inicio SSH',
        rootHelper2: 'Deshabilitar inicio SSH',
        rootHelper3: 'Solo clave permitida',
        rootHelper4: 'Solo se pueden ejecutar comandos predefinidos. No se permite ninguna otra operación.',
        passwordAuthentication: 'Autenticación por contraseña',
        pwdAuthHelper: 'Si habilitar o no la autenticación por contraseña. Por defecto está activada.',
        pubkeyAuthentication: 'Autenticación por clave',
        privateKey: 'Clave privada',
        publicKey: 'Clave pública',
        password: 'Contraseña',
        createMode: 'Método de creación',
        generate: 'Autogenerar',
        unSyncPass: 'La contraseña de la clave no se puede sincronizar',
        syncHelper:
            'La operación de sincronización limpiará las claves inválidas y sincronizará nuevos pares de claves completos. ¿Desea continuar?',
        input: 'Entrada manual',
        import: 'Subir archivo',
        authKeys: 'Claves de Autorización',
        authKeysHelper: '¿Guardar información actual de clave pública?',
        pubkey: 'Información de clave',
        pubKeyHelper: 'La información de la clave actual solo tiene efecto para el usuario {0}',
        encryptionMode: 'Modo de cifrado',
        passwordHelper: 'Puede contener entre 6 y 10 dígitos y letras en inglés',
        reGenerate: 'Regenerar clave',
        keyAuthHelper: 'Indica si se habilita la autenticación por clave.',
        useDNS: 'useDNS',
        dnsHelper:
            'Controla si la función de resolución DNS está habilitada en el servidor SSH para verificar la identidad de la conexión.',
        analysis: 'Información estadística',
        denyHelper:
            "Se realizará una operación de 'denegar' sobre las siguientes direcciones. Tras la configuración, la IP quedará prohibida de acceder al servidor. ¿Desea continuar?",
        acceptHelper:
            "Se realizará una operación de 'aceptar' sobre las siguientes direcciones. Tras la configuración, la IP recuperará el acceso normal. ¿Desea continuar?",
        noAddrWarning:
            'Actualmente no se han seleccionado direcciones [{0}]. ¡Por favor verifique e inténtelo de nuevo!',
        loginLogs: 'Registros de inicio de sesión',
        loginMode: 'Modo',
        authenticating: 'Clave',
        publickey: 'Clave',
        belong: 'Pertenece',
        local: 'Local',
        session: 'Sesión | Sesiones',
        loginTime: 'Hora de inicio de sesión',
        loginIP: 'IP de inicio de sesión',
        stopSSHWarn: 'Indica si se debe desconectar esta conexión SSH',
    },
    setting: {
        panel: 'Panel',
        user: 'Usuario del panel',
        userChange: 'Cambiar usuario del panel',
        userChangeHelper: 'Cambiar el usuario del panel cerrará tu sesión. ¿Deseas continuar?',
        passwd: 'Contraseña del panel',
        emailHelper: 'Para recuperación de contraseña',
        watermark: 'Configuración de marca de agua',
        watermarkContent: 'Contenido de la marca de agua',
        contentHelper:
            '{0} representa el nombre del nodo, {1} representa la dirección del nodo. Puede usar variables o ingresar nombres personalizados.',
        watermarkColor: 'Color de la marca de agua',
        watermarkFont: 'Tamaño de fuente de la marca de agua',
        watermarkHeight: 'Altura de la marca de agua',
        watermarkWidth: 'Anchura de la marca de agua',
        watermarkRotate: 'Ángulo de rotación',
        watermarkGap: 'Espaciado',
        watermarkCloseHelper: '¿Seguro que deseas desactivar la configuración de marca de agua del sistema?',
        watermarkOpenHelper: '¿Seguro que deseas guardar la configuración actual de marca de agua del sistema?',
        title: 'Alias del panel',
        panelPort: 'Puerto del panel',
        titleHelper:
            'Admite de 3 a 30 caracteres, incluyendo letras, números, espacios y caracteres especiales comunes',
        portHelper:
            'El rango recomendado de puertos es de 8888 a 65535. Nota: si el servidor tiene un grupo de seguridad, permite el nuevo puerto en el grupo de seguridad previamente',
        portChange: 'Cambio de puerto',
        portChangeHelper: 'Modificará el puerto del servicio y reiniciará el servicio. ¿Deseas continuar?',
        theme: 'Tema',
        menuTabs: 'Pestañas de menú',
        dark: 'Oscuro',
        darkGold: 'Dorado oscuro',
        light: 'Claro',
        auto: 'Seguir sistema',
        language: 'Idioma',
        languageHelper:
            'Por defecto sigue el idioma del navegador. Este parámetro solo tiene efecto en el navegador actual',
        sessionTimeout: 'Tiempo de espera de sesión',
        sessionTimeoutError: 'El tiempo mínimo de espera de sesión es de 300 segundos',
        sessionTimeoutHelper:
            'El panel cerrará la sesión automáticamente si no hay actividad durante más de {0} segundo(s).',
        systemIP: 'Dirección del sistema',
        systemIPHelper:
            'La dirección se utilizará para la redirección de aplicaciones, el acceso a contenedores y otras funciones. Cada nodo puede configurarse con una dirección diferente.',
        proxy: 'Proxy del servidor',
        proxyHelper: 'Tendrá efecto en los siguientes escenarios después de configurar el servidor proxy:',
        proxyHelper1:
            'Descarga de paquetes de instalación y sincronización desde la tienda de aplicaciones (solo edición profesional)',
        proxyHelper2:
            'Actualización del sistema y recuperación de información de actualización (solo edición profesional)',
        proxyHelper3: 'Verificación y sincronización de licencias del sistema',
        proxyHelper4: 'La red de Docker se accederá a través de un servidor proxy (solo edición profesional)',
        proxyHelper5: 'Descarga y sincronización unificada para bibliotecas de scripts del sistema (Profesional)',
        proxyHelper6: 'Solicitud de certificado (Profesional)',
        proxyType: 'Tipo de proxy',
        proxyUrl: 'Dirección del proxy',
        proxyPort: 'Puerto del proxy',
        proxyPasswdKeep: 'Recordar contraseña',
        proxyDocker: 'Proxy de Docker',
        proxyDockerHelper:
            'Sincroniza la configuración del servidor proxy con Docker, admite la extracción de imágenes en servidores offline y otras operaciones',
        syncToNode: 'Sincronizar con nodo',
        syncToNodeHelper: 'Sincroniza la configuración con otros nodos',
        nodes: 'Nodo',
        selectNode: 'Seleccionar nodo',
        selectNodeError: 'Por favor selecciona un nodo',
        apiInterface: 'Habilitar API',
        apiInterfaceClose: 'Una vez cerrado, no se podrá acceder a las interfaces de API. ¿Deseas continuar?',
        apiInterfaceHelper: 'Permite que aplicaciones de terceros accedan a la API.',
        apiInterfaceAlert1:
            'No lo habilites en entornos de producción ya que puede aumentar riesgos de seguridad en el servidor.',
        apiInterfaceAlert2:
            'No uses aplicaciones de terceros para llamar a la API y evitar posibles amenazas de seguridad.',
        apiInterfaceAlert3: 'Documento de API:',
        apiInterfaceAlert4: 'Documento de uso:',
        apiKey: 'Clave de API',
        apiKeyHelper: 'La clave API se utiliza para que aplicaciones de terceros accedan a la API.',
        ipWhiteList: 'Lista blanca de IP',
        ipWhiteListEgs: 'Una por línea. Por ejemplo,\n172.161.10.111\n172.161.10.0/24',
        ipWhiteListHelper:
            'Las IP en la lista blanca pueden acceder a la API, 0.0.0.0/0 (todas IPv4), ::/0 (todas IPv6)',
        apiKeyValidityTime: 'Periodo de validez de la clave de interfaz',
        apiKeyValidityTimeEgs: 'Periodo de validez de la clave de interfaz (en minutos)',
        apiKeyValidityTimeHelper:
            'La marca de tiempo de la interfaz es válida si la diferencia con la actual (en minutos) está dentro del rango permitido. Un valor 0 desactiva la verificación.',
        apiKeyReset: 'Restablecer clave de interfaz',
        apiKeyResetHelper:
            'El servicio asociado con la clave quedará inválido. Por favor añade una nueva clave al servicio',
        confDockerProxy: 'Configurar proxy de Docker',
        restartNowHelper: 'Configurar el proxy de Docker requiere reiniciar el servicio de Docker.',
        restartNow: 'Reiniciar ahora',
        restartLater: 'Reiniciar manualmente después',
        systemIPWarning: 'La dirección del servidor no está configurada. Configúrala primero en el panel de control.',
        systemIPWarning1:
            'La dirección del servidor actual está configurada en {0}, ¡y la redirección rápida no es posible!',
        syncTime: 'Hora del servidor',
        timeZone: 'Zona horaria',
        timeZoneChangeHelper: 'Cambiar la zona horaria requiere reiniciar el servicio. ¿Deseas continuar?',
        timeZoneHelper:
            'La modificación de zona horaria depende del servicio system timedatectl. Tomará efecto después de reiniciar el servicio 1Panel.',
        timeZoneCN: 'Pekín',
        timeZoneAM: 'Los Ángeles',
        timeZoneNY: 'Nueva York',
        ntpALi: 'Alibaba',
        ntpGoogle: 'Google',
        syncSite: 'Servidor NTP',
        syncSiteHelper:
            'Esta operación usará {0} como fuente para la sincronización horaria del sistema. ¿Deseas continuar?',
        changePassword: 'Cambiar contraseña',
        oldPassword: 'Contraseña original',
        newPassword: 'Nueva contraseña',
        retryPassword: 'Confirmar contraseña',
        noSpace: 'La información ingresada no puede incluir espacios',
        duplicatePassword: 'La nueva contraseña no puede ser igual a la original, por favor vuelve a introducirla',
        diskClean: 'Limpieza de caché',
        developerMode: 'Programa de vista previa',
        developerModeHelper:
            'Podrás experimentar nuevas funciones y correcciones antes de su lanzamiento general y dar retroalimentación anticipada.',
        thirdParty: 'Cuentas de terceros',
        scope: 'Ámbito',
        public: 'Pública',
        publicHelper:
            'Las cuentas de respaldo de tipo público se sincronizarán en cada subnodo, y estos podrán usarlas conjuntamente',
        private: 'Privada',
        privateHelper:
            'Las cuentas de respaldo de tipo privado solo se crean en el nodo actual y son para uso exclusivo de este nodo',
        noTypeForCreate: 'Actualmente no se ha creado ningún tipo de respaldo',
        LOCAL: 'Disco del servidor',
        OSS: 'Ali OSS',
        S3: 'Amazon S3',
        mode: 'Modo',
        MINIO: 'MinIO',
        SFTP: 'SFTP',
        WebDAV: 'WebDAV',
        WebDAVAlist: 'La conexión WebDAV a Alist puede consultarse en la documentación oficial',
        UPYUN: 'UPYUN',
        ALIYUN: 'Aliyun Drive',
        ALIYUNHelper:
            'El límite máximo actual para descargas sin cliente en Aliyun Drive es de 100 MB. Superarlo requiere descargar mediante el cliente.',
        ALIYUNRecover:
            'El límite máximo actual para descargas sin cliente en Aliyun Drive es de 100 MB. Superarlo requiere descargar mediante el cliente al dispositivo local y luego sincronizar la instantánea para la recuperación.',
        GoogleDrive: 'Google Drive',
        analysis: 'Análisis',
        analysisHelper:
            'Pega el contenido completo del token para analizar automáticamente las partes requeridas. Para operaciones específicas, consulta la documentación oficial.',
        serviceName: 'Nombre del servicio',
        operator: 'Operador',
        OneDrive: 'Microsoft OneDrive',
        isCN: 'Versión Century Internet',
        isNotCN: 'Versión internacional',
        client_id: 'ID de cliente',
        client_secret: 'Secreto de cliente',
        redirect_uri: 'URL de redirección',
        onedrive_helper: 'La configuración personalizada puede consultarse en la documentación oficial',
        clickToRefresh: 'Haz clic para refrescar',
        refreshTime: 'Tiempo de actualización del token',
        refreshStatus: 'Estado de actualización del token',
        backupDir: 'Directorio de respaldo',
        codeWarning: 'El formato del código de autorización es incorrecto, ¡por favor confírmalo de nuevo!',
        code: 'Código de autorización',
        codeHelper:
            'Haz clic en el botón "Obtener", luego inicia sesión en {0} y copia el contenido después de "code" en el enlace redirigido. Pégalo en este campo. Para instrucciones específicas, consulta la documentación oficial.',
        googleHelper:
            'Primero crea una aplicación de Google y obtén la información del cliente, completa el formulario y haz clic en obtener. Para operaciones específicas, consulta la documentación oficial.',
        loadCode: 'Obtener',
        COS: 'Tencent COS',
        ap_beijing_1: 'Zona 1 Pekín',
        ap_beijing: 'Pekín',
        ap_nanjing: 'Nankín',
        ap_shanghai: 'Shanghái',
        ap_guangzhou: 'Cantón',
        ap_chengdu: 'Chengdú',
        ap_chongqing: 'Chongqing',
        ap_shenzhen_fsi: 'Shenzhen Financiero',
        ap_shanghai_fsi: 'Shanghái Financiero',
        ap_beijing_fsi: 'Pekín Financiero',
        ap_hongkong: 'Hong Kong, China',
        ap_singapore: 'Singapur',
        ap_mumbai: 'Bombay',
        ap_jakarta: 'Yakarta',
        ap_seoul: 'Seúl',
        ap_bangkok: 'Bangkok',
        ap_tokyo: 'Tokio',
        na_siliconvalley: 'Silicon Valley (EE. UU. Oeste)',
        na_ashburn: 'Ashburn (EE. UU. Este)',
        na_toronto: 'Toronto',
        sa_saopaulo: 'São Paulo',
        eu_frankfurt: 'Fráncfort',
        KODO: 'Qiniu Kodo',
        scType: 'Tipo de almacenamiento',
        typeStandard: 'Estándar',
        typeStandard_IA: 'Estándar_IA',
        typeArchive: 'Archivo',
        typeDeep_Archive: 'Archivo profundo',
        scLighthouse: 'Por defecto, el almacenamiento ligero de objetos solo admite este tipo de almacenamiento',
        scStandard:
            'Almacenamiento estándar, adecuado para escenarios con grandes volúmenes de archivos de acceso frecuente y alta interacción de datos.',
        scStandard_IA:
            'Almacenamiento de acceso infrecuente, adecuado para escenarios con baja frecuencia de acceso (ej., 1-2 veces por mes), con duración mínima de 30 días.',
        scArchive: 'Almacenamiento de archivo, adecuado para escenarios con frecuencia de acceso extremadamente baja.',
        scDeep_Archive:
            'Almacenamiento en frío duradero, adecuado para escenarios con frecuencia de acceso extremadamente baja.',
        archiveHelper:
            'Los archivos de almacenamiento de archivo no pueden descargarse directamente, deben restaurarse primero desde la web del proveedor de la nube correspondiente. ¡Úsalo con precaución!',
        backupAlert:
            'Si un proveedor de nube es compatible con el protocolo S3, puedes usar Amazon S3 directamente para el respaldo. ',
        domain: 'Dominio de aceleración',
        backupAccount: 'Cuenta de respaldo | Cuentas de respaldo',
        loadBucket: 'Obtener bucket',
        accountName: 'Nombre de la cuenta',
        accountKey: 'Clave de la cuenta',
        address: 'Dirección',
        path: 'Ruta',
        safe: 'Seguridad',
        bindInfo: 'Información de enlace',
        bindAll: 'Escuchar en todas',
        bindInfoHelper:
            'Cambiar la dirección o el protocolo de escucha del servicio puede causar indisponibilidad. ¿Deseas continuar?',
        ipv6: 'Escuchar IPv6',
        bindAddress: 'Dirección de escucha',
        entrance: 'Entrada',
        showEntrance: 'Mostrar alerta de deshabilitado en la página "Resumen"',
        entranceHelper:
            'Habilitar entrada de seguridad solo permitirá iniciar sesión en el panel mediante la entrada especificada.',
        entranceError: 'Introduce un punto de entrada seguro de 5 a 116 caracteres, solo se admiten números o letras.',
        entranceInputHelper: 'Déjalo en blanco para desactivar la entrada de seguridad.',
        randomGenerate: 'Aleatorio',
        expirationTime: 'Fecha de expiración',
        unSetting: 'No configurado',
        noneSetting:
            'Establece el tiempo de expiración para la contraseña del panel. Tras expirar, deberás restablecer la contraseña',
        expirationHelper:
            'Si el tiempo de expiración de la contraseña es [0] días, la función de expiración estará desactivada',
        days: 'Días de expiración',
        expiredHelper: 'La contraseña actual ha expirado. Por favor cámbiala de nuevo.',
        timeoutHelper:
            '[ {0} días ] La contraseña del panel está a punto de expirar. Tras expirar, deberás restablecerla',
        complexity: 'Validación de complejidad',
        complexityHelper:
            'Tras habilitarlo, la regla de validación de contraseña será: 8-30 caracteres, incluyendo letras, números y al menos dos caracteres especiales.',
        bindDomain: 'Vincular dominio',
        unBindDomain: 'Desvincular dominio',
        panelSSL: 'SSL del panel',
        panelSSLHelper:
            'Tras la renovación automática del SSL del panel, deberás reiniciar manualmente el servicio 1Panel para que los cambios surtan efecto.',
        unBindDomainHelper:
            'La acción de desvincular un dominio puede provocar inseguridad en el sistema. ¿Deseas continuar?',
        bindDomainHelper: 'Tras vincular el dominio, solo ese dominio podrá acceder al servicio de 1Panel.',
        bindDomainHelper1: 'Déjalo en blanco para desactivar la vinculación de dominio.',
        bindDomainWarning:
            'Tras la vinculación del dominio, se cerrará la sesión y solo se podrá acceder al servicio 1Panel mediante el dominio especificado. ¿Deseas continuar?',
        allowIPs: 'IP autorizada',
        unAllowIPs: 'IP no autorizada',
        unAllowIPsWarning:
            'Autorizar una IP vacía permitirá que todas las IP accedan al sistema, lo cual puede provocar inseguridad. ¿Deseas continuar?',
        allowIPsHelper: 'Tras configurar la lista de IP autorizadas, solo las IP en la lista podrán acceder al panel.',
        allowIPsWarning:
            'Tras configurar la lista de IP autorizadas, solo las IP en la lista podrán acceder al panel. ¿Deseas continuar?',
        allowIPsHelper1: 'Déjalo en blanco para desactivar la restricción por IP.',
        allowIPEgs: 'Una por línea. Por ejemplo,\n172.16.10.111\n172.16.10.0/24',
        mfa: 'Autenticación en dos pasos (2FA)',
        mfaClose: 'Desactivar MFA reducirá la seguridad del servicio. ¿Deseas continuar?',
        secret: 'Secreto',
        mfaInterval: 'Intervalo de refresco',
        mfaTitleHelper:
            'El título se usa para distinguir diferentes hosts de 1Panel. Tras modificarlo, vuelve a escanear o añade la clave secreta manualmente.',
        mfaIntervalHelper:
            'Tras modificar el tiempo de refresco, vuelve a escanear o añade la clave secreta manualmente.',
        mfaAlert:
            'El token de un solo uso es un número dinámico de 6 dígitos basado en la hora actual. Asegúrate de que la hora del servidor esté sincronizada.',
        mfaHelper: 'Tras habilitarlo, será necesario verificar el token de un solo uso.',
        mfaHelper1: 'Descarga una app de autenticación, por ejemplo,',
        mfaHelper2:
            'Para obtener el token, escanea el siguiente código QR con tu app de autenticación o copia la clave secreta en la aplicación.',
        mfaHelper3: 'Introduce los seis dígitos de la app',
        mfaCode: 'Token de un solo uso',
        sslChangeHelper: 'Modificará la configuración https y reiniciará el servicio. ¿Deseas continuar?',
        sslDisable: 'Deshabilitar',
        sslDisableHelper:
            'Si el servicio https está deshabilitado, deberás reiniciar el panel para que surta efecto. ¿Deseas continuar?',
        noAuthSetting: 'Configuración no autorizada',
        noAuthSettingHelper:
            'Cuando los usuarios no inician sesión desde la entrada de seguridad especificada, o no acceden al panel desde la IP o dominio especificados, esta respuesta puede ocultar características del panel.',
        responseSetting: 'Configuración de respuesta',
        help200: 'Página de ayuda',
        error400: 'Solicitud incorrecta',
        error401: 'No autorizado',
        error403: 'Prohibido',
        error404: 'No encontrado',
        error408: 'Tiempo de espera de la solicitud',
        error416: 'Rango no satisfactorio',
        error444: 'Conexión cerrada',
        error500: 'Error interno del servidor',
        https: 'Configurar acceso al panel mediante protocolo HTTPS puede mejorar la seguridad del acceso.',
        certType: 'Tipo de certificado',
        selfSigned: 'Autofirmado',
        selfSignedHelper:
            'Los navegadores pueden no confiar en certificados autofirmados y mostrar advertencias de seguridad.',
        select: 'Seleccionar',
        domainOrIP: 'Dominio o IP:',
        timeOut: 'Tiempo de espera',
        rootCrtDownload: 'Descargar certificado raíz',
        primaryKey: 'Clave primaria',
        certificate: 'Certificado',
        backupJump:
            'Archivos de respaldo fuera de la lista actual, intenta descargarlos desde el directorio de archivos e importarlos para el respaldo.',
        snapshot: 'Instantánea | Instantáneas',
        noAppData: 'No hay aplicaciones del sistema disponibles para seleccionar',
        noBackupData: 'No hay datos de respaldo disponibles para seleccionar',
        stepBaseData: 'Datos base',
        stepAppData: 'Aplicación del sistema',
        stepPanelData: 'Datos del sistema',
        stepBackupData: 'Datos de respaldo',
        stepOtherData: 'Otros datos',
        operationLog: 'Conservar registro de operaciones',
        loginLog: 'Conservar registro de accesos',
        systemLog: 'Conservar registro del sistema',
        taskLog: 'Conservar registro de tareas',
        monitorData: 'Conservar datos de monitoreo',
        dockerConf: 'Conservar configuración de Docker',
        selectAllImage: 'Respaldar todas las imágenes de aplicaciones',
        logLabel: 'Registro',
        agentLabel: 'Configuración de nodo',
        appDataLabel: 'Datos de aplicación',
        appImage: 'Imagen de aplicación',
        appBackup: 'Respaldo de aplicación',
        backupLabel: 'Directorio de respaldo',
        confLabel: 'Archivo de configuración',
        dockerLabel: 'Contenedor',
        taskLabel: 'Tarea programada',
        resourceLabel: 'Directorio de recursos de aplicación',
        runtimeLabel: 'Entorno de ejecución',
        appLabel: 'Aplicación',
        databaseLabel: 'Base de datos',
        snapshotLabel: 'Archivo de instantánea',
        websiteLabel: 'Sitio web',
        directoryLabel: 'Directorio',
        appStoreLabel: 'Tienda de aplicaciones',
        shellLabel: 'Script',
        tmpLabel: 'Directorio temporal',
        sslLabel: 'Directorio de certificados',
        reCreate: 'No se pudo crear la instantánea',
        reRollback: 'Error al revertir la instantánea',
        deleteHelper:
            'Todos los archivos de instantánea, incluidos los de la cuenta de respaldo de terceros, serán eliminados. ¿Deseas continuar?',
        status: 'Estado de la instantánea',
        ignoreRule: 'Regla de exclusión',
        editIgnoreRule: '@:commons.button.edit @.lower:setting.ignoreRule',
        ignoreHelper:
            'Esta regla se usará para comprimir y respaldar el directorio de datos de 1Panel al crear la instantánea. Por defecto, se ignoran los archivos de socket.',
        ignoreHelper1: 'Una por línea. Por ejemplo,\n*.log\n/opt/1panel/cache',
        panelInfo: 'Escribir información básica de 1Panel',
        panelBin: 'Respaldar archivos del sistema 1Panel',
        daemonJson: 'Respaldar archivo de configuración de Docker',
        appData: 'Respaldar aplicaciones instaladas de 1Panel',
        panelData: 'Respaldar directorio de datos de 1Panel',
        backupData: 'Respaldar directorio local de respaldo de 1Panel',
        compress: 'Crear archivo de instantánea',
        upload: 'Subir archivo de instantánea',
        recoverDetail: 'Detalle de recuperación',
        createSnapshot: 'Crear instantánea',
        importSnapshot: 'Sincronizar instantánea',
        importHelper: 'Directorio de instantánea: ',
        lastRecoverAt: 'Última hora de recuperación',
        lastRollbackAt: 'Última hora de reversión',
        reDownload: 'Descargar el archivo de respaldo de nuevo',
        recoverErrArch: '¡La recuperación de instantánea entre arquitecturas de servidor diferentes no es compatible!',
        recoverErrSize:
            'Se detectó espacio insuficiente en disco, por favor verifica o libera espacio e inténtalo de nuevo.',
        recoverHelper:
            'Iniciando recuperación desde la instantánea {0}, confirma la siguiente información antes de continuar:',
        recoverHelper1: 'La recuperación requiere reiniciar Docker y los servicios de 1Panel',
        recoverHelper2:
            'Asegúrate de que haya suficiente espacio en disco en el servidor (Tamaño del archivo de instantánea: {0}, Espacio disponible: {1})',
        recoverHelper3:
            'Asegúrate de que la arquitectura del servidor coincida con la del servidor donde se creó la instantánea (Arquitectura actual: {0})',
        rollback: 'Reversión',
        rollbackHelper:
            'Revertir esta recuperación reemplazará todos los archivos de esta recuperación y puede requerir reiniciar Docker y los servicios de 1Panel. ¿Deseas continuar?',
        upgradeRecord: 'Registro de actualización',
        upgrading: ' Actualizando, por favor espera...',
        upgradeHelper: 'La actualización requiere reiniciar el servicio 1Panel. ¿Deseas continuar?',
        noUpgrade: 'Actualmente es la última versión',
        versionHelper:
            'Reglas de nombre: [versión mayor].[versión funcional].[versión de corrección de errores], como se muestra en el siguiente ejemplo:',
        rollbackLocalHelper:
            'El nodo principal no admite reversión directa. ¡Ejecuta manualmente el comando [1pctl restore] para revertir!',
        upgradeCheck: 'Buscar actualizaciones',
        upgradeNotes: 'Notas de la versión',
        upgradeNow: 'Actualizar ahora',
        source: 'Fuente de descarga',
        versionNotSame:
            'La versión del nodo no coincide con la del nodo principal. Actualiza en la gestión de nodos antes de reintentar.',
        versionCompare:
            'Se detectó que el nodo {0} ya está en la última versión actualizable. Verifica la versión del nodo principal e inténtalo de nuevo.',

        about: 'Acerca de',
        versionItem: 'Versión Actual',
        backupCopies: 'Número de Copias a Conservar',
        backupCopiesHelper:
            'Establezca el número de copias de respaldo de actualización para conservar para la reversión de versión. 0 significa conservar todas.',
        backupCopiesRule: 'Conserve al menos 3 registros de respaldo de actualización',
        release: 'Notas de lanzamiento',
        releaseHelper:
            'No se pudieron obtener las notas de lanzamiento para el entorno actual. Puedes consultarlas manualmente en la documentación oficial.',
        project: 'GitHub',
        issue: 'Comentarios',
        doc: 'Documento oficial',
        star: 'Estrella',
        description: 'Panel de servidor Linux',
        forum: 'Discusiones',
        doc2: 'Documentación',
        currentVersion: 'Versión',
        license: 'Licencia',
        bindNode: 'Vincular nodo',
        menuSetting: 'Configuración de menú',
        menuSettingHelper: 'Cuando solo exista 1 submenú, la barra de menú mostrará únicamente ese submenú',
        showAll: 'Mostrar todo',
        hideALL: 'Ocultar todo',
        ifShow: 'Mostrar o no',
        menu: 'Menú',
        confirmMessage: 'La página se actualizará para refrescar la lista de menús avanzados. ¿Deseas continuar?',
        recoverMessage:
            'La página se actualizará y la lista de menús se restaurará a su estado inicial. ¿Desea continuar?',
        compressPassword: 'Contraseña de compresión',
        backupRecoverMessage:
            'Introduce la contraseña de compresión o descompresión (déjalo en blanco para no establecerla)',
    },
    license: {
        community: 'OSS',
        oss: 'Software Open Source',
        pro: 'Pro',
        trial: 'Prueba',
        add: 'Agregar versión Community',
        licenseBindHelper:
            'Las cuotas de nodo gratuitas solo se pueden utilizar cuando la licencia está vinculada a un nodo',
        licenseAlert:
            'Solo se pueden agregar nodos Community cuando la licencia está correctamente vinculada. Solo los nodos vinculados admiten cambios.',
        licenseUnbindHelper: 'Nodos Community detectados en esta licencia. Desvincule e intente nuevamente.',
        subscription: 'Suscripción',
        perpetual: 'Perpetua',
        versionConstraint: '{0} Compra de versión',
        forceUnbind: 'Desvinculación forzada',
        forceUnbindHelper: 'La desvinculación forzada ignorará errores y liberará la licencia.',
        updateForce: 'Forzar actualización (ignorar errores para liberar la licencia)',
        trialInfo: 'Versión',
        authorizationId: 'ID de autorización',
        authorizedUser: 'Usuario autorizado',
        lostHelper: 'La licencia alcanzó el máximo de reintentos. Sincronícela manualmente para activar funciones Pro.',
        exceptionalHelper:
            'Verificación de licencia anómala. Sincronícela manualmente para activar funciones Pro. detalle: ',
        quickUpdate: 'Actualización rápida',
        import: 'Importar',
        power: 'Autorizar',
        unbindHelper: 'Se eliminarán todos los ajustes Pro tras desvincular. ¿Desea continuar?',
        importLicense: 'Importar licencia',
        importHelper: 'Haga clic o arrastre el archivo de licencia aquí',
        levelUpPro: 'Actualizar a Pro',
        licenseSync: 'Sincronizar licencia',
        knowMorePro: 'Ver más',
        closeAlert: 'Puede cerrar la página en la configuración del panel',
        introduce: 'Introducción de funciones',
        waf: 'Actualizar a Pro permite interceptación, logs, geobloqueo, reglas, páginas personalizadas, etc.',
        tamper: 'Actualizar a Pro protege sitios ante modificaciones no autorizadas.',
        tamperHelper:
            'La operación falló, el archivo/carpeta tiene protección antimanipulación. Revise e intente de nuevo.',
        setting: 'Actualizar a Pro permite personalizar logo, mensaje de bienvenida y más.',
        monitor: 'Pro permite ver estado web en tiempo real, tendencias, logs, etc.',
        alert: 'Pro permite recibir alertas SMS y ver logs, control total de eventos clave.',
        node: 'Pro permite gestionar múltiples servidores Linux con 1Panel.',
        fileExchange: 'Pro permite transferir archivos entre varios servidores.',
        app: 'Pro permite ver información de servicio, monitoreo, etc. vía app móvil.',
        cluster:
            'Actualizar a la Edición Profesional te permite gestionar clústeres maestro-esclavo de MySQL/Postgres/Redis.',
    },
    clean: {
        scan: 'Iniciar escaneo',
        scanHelper: 'Limpie fácilmente archivos basura generados por 1Panel',
        clean: 'Limpiar ahora',
        reScan: 'Volver a escanear',
        cleanHelper: 'Esto eliminará los archivos seleccionados y no se puede deshacer. ¿Desea continuar?',
        statusSuggest: '(Limpieza recomendada)',
        statusClean: '(Muy limpio)',
        statusEmpty: 'Muy limpio, ¡no necesita limpieza!',
        statusWarning: '(Precaución)',
        lastCleanTime: 'Última limpieza: {0}',
        lastCleanHelper: 'Archivos/carpetas limpiados: {0}, total limpiado: {1}',
        cleanSuccessful: 'Limpieza completada correctamente',
        currentCleanHelper: 'En esta sesión: {0} archivos/carpetas, Total: {1}',
        suggest: '(Recomendado)',
        totalScan: 'Total a limpiar: ',
        selectScan: 'Total seleccionado: ',
        system: 'Archivos basura del sistema',
        systemHelper: 'Archivos temporales de instantáneas, actualizaciones, archivos obsoletos, etc.',
        panelOriginal: 'Archivos de recuperación de instantáneas',
        backup: 'Temporary backup directory',
        upgrade: 'Archivos de actualización',
        upgradeHelper: '(Mantenga el último respaldo para restaurar el sistema)',
        cache: 'Archivos de caché',
        cacheHelper: '(Precaución, limpiar requiere reiniciar servicios)',
        snapshot: 'Archivos temporales de instantáneas',
        rollback: 'Archivos de respaldo antes de recuperación',
        upload: 'Archivos temporales de carga',
        uploadHelper: 'Archivos temporales subidos en la lista de respaldos',
        download: 'Archivos temporales de descarga',
        downloadHelper: 'Archivos temporales descargados desde respaldos externos',
        directory: 'Directorio',
        systemLog: 'Archivos de log del sistema',
        systemLogHelper: 'Logs del sistema, construcción de contenedores, pulls, tareas programadas',
        dockerLog: 'Logs de operaciones de contenedores',
        taskLog: 'Logs de tareas programadas',
        shell: 'Tareas programadas de shell',
        containerShell: 'Tareas de shell dentro de contenedor',
        curl: 'Tareas programadas CURL',
        containerTrash: 'Papelera de contenedores',
        volumes: 'Volúmenes',
        buildCache: 'Caché de build de contenedores',
    },
    app: {
        app: 'Aplicación | Aplicaciones',
        installName: 'Nombre',
        installed: 'Instaladas',
        all: 'Todas',
        version: 'Versión',
        detail: 'Detalles',
        params: 'Editar parámetros',
        author: 'Autor',
        source: 'Origen',
        appName: 'Nombre de la aplicación',
        deleteWarn:
            'La eliminación eliminará todos los datos y respaldos. Esta acción no se puede deshacer. ¿Desea continuar?',
        syncSuccess: 'Sincronizado correctamente',
        canUpgrade: 'Actualizaciones',
        backupName: 'Nombre de archivo',
        backupPath: 'Ruta del archivo',
        backupdate: 'Fecha de respaldo',
        versionSelect: 'Seleccione una versión',
        operatorHelper: 'Se realizará la operación {0} en la aplicación seleccionada. ¿Desea continuar?',
        startOperatorHelper: 'La aplicación se iniciará. ¿Desea continuar?',
        stopOperatorHelper: 'La aplicación se detendrá. ¿Desea continuar?',
        restartOperatorHelper: 'La aplicación se reiniciará. ¿Desea continuar?',
        reloadOperatorHelper: 'La aplicación se recargará. ¿Desea continuar?',
        checkInstalledWarn: 'No se detecta "{0}". Vaya a "Tienda de aplicaciones" para instalar.',
        limitHelper: 'La aplicación ya está instalada.',
        deleteHelper: '"{0}" está asociada con los siguientes recursos y no puede eliminarse',
        checkTitle: 'Aviso',
        defaultConfig: 'Configuración predeterminada',
        defaultConfigHelper: 'Se restauró a configuración predeterminada, surte efecto al guardar',
        forceDelete: 'Forzar eliminación',
        forceDeleteHelper: 'Forzar ignorará errores y eliminará la metadata.',
        deleteBackup: 'Eliminar respaldo',
        deleteBackupHelper: 'También eliminar respaldo de la aplicación',
        deleteDB: 'Eliminar base de datos',
        deleteDBHelper: 'También eliminar la base de datos',
        noService: 'Sin {0}',
        toInstall: 'Ir a instalar',
        param: 'Parámetros',
        alreadyRun: 'Edad',
        syncAppList: 'Sincronizar',
        less1Minute: 'Menos de 1 minuto',
        appOfficeWebsite: 'Sitio web',
        github: 'Github',
        document: 'Documento',
        updatePrompt: 'No hay actualizaciones disponibles',
        installPrompt: 'Aún no hay apps instaladas',
        updateHelper: 'Editar parámetros puede hacer que la app no inicie. Proceda con precaución.',
        updateWarn: 'Actualizar parámetros requiere reconstruir la app. ¿Desea continuar?',
        busPort: 'Puerto',
        syncStart: '¡Sincronizando! Actualice la tienda después',
        advanced: 'Configuración avanzada',
        cpuCore: 'núcleo(s)',
        containerName: 'Nombre del contenedor',
        containerNameHelper: 'El nombre se generará automáticamente si no se establece',
        allowPort: 'Acceso externo',
        allowPortHelper: 'Permitir acceso externo abrirá el puerto en el firewall',
        appInstallWarn:
            'La aplicación no expone el puerto externo por defecto. Use "Configuración avanzada" para habilitarlo.',
        upgradeStart: '¡Iniciando actualización! Refresque la página después',
        toFolder: 'Abrir directorio de instalación',
        editCompose: 'Editar archivo compose',
        editComposeHelper: 'Editar el compose puede hacer que la instalación falle',
        composeNullErr: 'El compose no puede estar vacío',
        takeDown: 'Desinstalar',
        allReadyInstalled: 'Instaladas',
        installHelper: 'Si tiene problemas con el pull de imagen, configure aceleración.',
        installWarn: 'Si no habilita el acceso externo, la app no será accesible externamente. ¿Desea continuar?',
        showIgnore: 'Ver aplicaciones ignoradas',
        cancelIgnore: 'Cancelar ignoradas',
        ignoreList: 'Aplicaciones ignoradas',
        appHelper: 'Consulte los detalles de la app para instrucciones de instalación.',
        backupApp: 'Respaldar aplicación antes de actualizar',
        backupAppHelper:
            'Si la actualización falla, el respaldo se revertirá. Revise el motivo en los logs del sistema.',
        openrestyDeleteHelper: 'Eliminar OpenResty forzadamente borrará todos los sitios. ¿Desea continuar?',
        downloadLogHelper1: 'Se descargarán todos los logs de la app {0}. ¿Desea continuar?',
        downloadLogHelper2: 'Se descargarán los últimos {1} logs de la app {0}. ¿Desea continuar?',
        syncAllAppHelper: 'Se sincronizarán todas las aplicaciones. ¿Desea continuar?',
        hostModeHelper: 'El modo de red es host. Si necesita abrir el puerto, hágalo manualmente en el firewall.',
        showLocal: 'Mostrar apps locales',
        reload: 'Recargar',
        upgradeWarn: 'Actualizar reemplazará docker-compose.yml. Si hay cambios, puede ver la comparación.',
        newVersion: 'Nueva versión',
        oldVersion: 'Versión actual',
        composeDiff: 'Comparación de archivos',
        showDiff: 'Ver comparación',
        useNew: 'Usar versión personalizada',
        useDefault: 'Usar versión predeterminada',
        useCustom: 'Personalizar docker-compose.yml',
        useCustomHelper:
            'Personalizar docker-compose.yml puede causar errores de actualización. Si no es necesario, no marque.',
        diffHelper: 'Izquierda: versión vieja, Derecha: nueva. Edite y guarde la versión personalizada.',
        pullImage: 'Pull de imagen',
        pullImageHelper: 'Ejecutar docker pull antes de iniciar la app',
        deleteImage: 'Eliminar imagen',
        deleteImageHelper: 'Eliminar imagen asociada a la app. Si falla, la tarea continuará.',
        requireMemory: 'Memoria',
        supportedArchitectures: 'Arquitecturas',
        link: 'Enlace',
        showCurrentArch: 'Arquitectura',
        syncLocalApp: 'Sincronizar app local',
        memoryRequiredHelper: 'La app requiere {0} de memoria',
        gpuConfig: 'Habilitar soporte GPU',
        gpuConfigHelper: 'Asegúrese de tener GPU NVIDIA, drivers y NVIDIA Docker Container Toolkit instalados',
        webUI: 'Dirección web',
        webUIPlaceholder: 'Ejemplo: ejemplo.com:8080/login',
        defaultWebDomain: 'Dirección de acceso predeterminada',
        defaultWebDomainHepler: 'Si el puerto es 8080, el acceso será http(s)://dirección:8080',
        webUIConfig:
            'No hay dirección de acceso predeterminada. Configúrela en los parámetros de la app o en la configuración del panel.',
        toLink: 'Abrir',
        customAppHelper: 'Antes de instalar un paquete personalizado, asegúrese de no tener apps instaladas.',
        forceUninstall: 'Desinstalar forzadamente',
        syncCustomApp: 'Sincronizar app personalizada',
        ignoreAll: 'Ignorar todas las versiones siguientes',
        ignoreVersion: 'Ignorar versión especificada',
        specifyIP: 'Vincular IP de host',
        specifyIPHelper: 'Establece la dirección/red del host para el puerto (si no sabe, no rellene)',
        uninstallDeleteBackup: 'Desinstalar - Eliminar respaldo',
        uninstallDeleteImage: 'Desinstalar - Eliminar imagen',
        upgradeBackup: 'Respaldar app antes de actualizar',
        noAppHelper:
            'No se detectó ninguna aplicación, por favor vaya al centro de tareas para ver el registro de sincronización de la tienda de aplicaciones',
        isEdirWarn: 'Se detectó modificación en el archivo docker-compose.yml, por favor revise la comparación',
    },
    website: {
        primaryDomain: 'Dominio principal',
        otherDomains: 'Otros dominios',
        static: 'Estático',
        deployment: 'Despliegue',
        supportUpType: 'Solo se admite el formato .tar.gz, y el paquete comprimido debe contener el archivo {0}.json',
        proxy: 'Proxy inverso',
        alias: 'Alias',
        ftpUser: 'Cuenta FTP',
        ftpPassword: 'Contraseña FTP',
        ftpHelper:
            'Al crear un sitio web se generará una cuenta FTP correspondiente, cuyo directorio enlazará con el directorio del sitio.',
        remark: 'Observación',
        groupSetting: 'Gestión de grupos',
        createGroup: 'Crear grupo',
        appNew: 'Nueva aplicación',
        appInstalled: 'Aplicación instalada',
        create: 'Crear',
        delete: 'Eliminar sitio',
        deleteApp: 'Eliminar aplicación',
        deleteBackup: 'Eliminar copia de seguridad',
        domain: 'Dominio',
        domainHelper: 'Un dominio por línea.\nSoporta comodín "*" y direcciones IP.\nTambién permite añadir puerto.',
        addDomain: 'Añadir dominio',
        domainConfig: 'Dominios',
        defaultDoc: 'Documento predeterminado',
        perserver: 'Concurrencia por servidor',
        perserverHelper: 'Límite de concurrencia máxima para este sitio',
        perip: 'Concurrencia por IP',
        peripHelper: 'Límite de accesos concurrentes desde una misma IP',
        rate: 'Límite de tráfico',
        rateHelper: 'Limita el flujo de cada petición (unidad: KB)',
        limitHelper: 'Activar control de flujo',
        other: 'Otros',
        currentSSL: 'Certificado actual',
        dnsAccount: 'Cuenta DNS',
        applySSL: 'Solicitar certificado',
        SSLList: 'Lista de certificados',
        createDnsAccount: 'Cuenta DNS',
        aliyun: 'Aliyun DNS',
        aliEsa: 'Aliyun ESA',
        awsRoute53: 'Amazon Route 53',
        manual: 'Resolución manual',
        key: 'Clave',
        check: 'Ver',
        acmeAccountManage: 'Gestión de cuentas ACME',
        email: 'Correo electrónico',
        acmeAccount: 'Cuenta ACME',
        provider: 'Método de verificación',
        dnsManual: 'Resolución manual',
        expireDate: 'Fecha de expiración',
        brand: 'Organización',
        deploySSL: 'Desplegar certificado',
        deploySSLHelper: '¿Seguro que deseas desplegar este certificado?',
        ssl: 'Certificado | Certificados',
        dnsAccountManage: 'Gestión de proveedores DNS',
        renewSSL: 'Renovar',
        renewHelper: '¿Seguro que deseas renovar el certificado?',
        renewSuccess: 'Certificado renovado',
        enableHTTPS: 'Habilitar',
        aliasHelper: 'El alias es el nombre de directorio del sitio web',
        lastBackupAt: 'Última copia de seguridad',
        null: 'Ninguno',
        nginxConfig: 'Configuración Nginx',
        websiteConfig: 'Configuración del sitio',
        proxySettings: 'Configuración de proxy',
        advancedSettings: 'Configuración avanzada',
        cacheSettings: 'Configuración de caché',
        sniSettings: 'Configuración SNI',
        basic: 'Básico',
        source: 'Configuración',
        security: 'Seguridad',
        nginxPer: 'Optimización de rendimiento',
        neverExpire: 'Nunca expira',
        setDefault: 'Establecer como predeterminado',
        deleteHelper: 'El estado de la aplicación asociada es anómalo, revisa antes de continuar',
        toApp: 'Ir a aplicaciones instaladas',
        cycle: 'Ciclo',
        frequency: 'Frecuencia',
        ccHelper:
            'Si la misma URL recibe más de {1} peticiones en {0} segundos, se activa defensa CC y se bloquea la IP',
        mustSave: 'Los cambios deben guardarse para que surtan efecto',
        fileExt: 'Extensión de archivo',
        fileExtBlock: 'Lista negra de extensiones',
        value: 'Valor',
        enable: 'Habilitar',
        proxyAddress: 'Dirección de proxy',
        proxyHelper: 'Ejemplo: 127.0.0.1:8080',
        forceDelete: 'Forzar eliminación',
        forceDeleteHelper: 'La eliminación forzada ignorará errores y eliminará metadatos igualmente.',
        deleteAppHelper: 'Eliminar también aplicaciones y backups asociados',
        deleteBackupHelper: 'Eliminar también copias de seguridad del sitio',
        deleteDatabaseHelper: 'También eliminar la base de datos asociada al sitio web',
        deleteConfirmHelper: `Esta acción es irreversible. Escribe <span style="color:red"> "{0}" </span> para confirmar.`,
        staticPath: 'El directorio principal correspondiente es ',
        limit: 'Esquema',
        blog: 'Foro/Blog',
        imageSite: 'Sitio de imágenes',
        downloadSite: 'Sitio de descargas',
        shopSite: 'Tienda',
        doorSite: 'Portal',
        qiteSite: 'Empresa',
        videoSite: 'Video',
        errLog: 'Log de errores',
        stopHelper: 'Al detener el sitio, no será accesible y mostrará una página de parada. ¿Deseas continuar?',
        startHelper: 'Al habilitar el sitio, los usuarios podrán acceder normalmente. ¿Deseas continuar?',
        sitePath: 'Directorio',
        siteAlias: 'Alias del sitio',
        primaryPath: 'Directorio raíz',
        folderTitle: 'El sitio contiene principalmente las siguientes carpetas',
        wafFolder: 'Reglas del firewall',
        indexFolder: 'Directorio raíz del sitio',
        sslFolder: 'Certificados del sitio',
        enableOrNot: 'Habilitar',
        oldSSL: 'Certificado existente',
        manualSSL: 'Importar certificado',
        select: 'Seleccionar',
        selectSSL: 'Seleccionar certificado',
        privateKey: 'Clave privada (KEY)',
        certificate: 'Certificado (formato PEM)',
        HTTPConfig: 'Opciones HTTP',
        HTTPSOnly: 'Bloquear peticiones HTTP',
        HTTPToHTTPS: 'Redirigir a HTTPS',
        HTTPAlso: 'Permitir peticiones HTTP directas',
        sslConfig: 'Opciones SSL',
        disableHTTPS: 'Desactivar HTTPS',
        disableHTTPSHelper: 'Desactivar HTTPS eliminará la configuración del certificado. ¿Quieres continuar?',
        SSLHelper:
            'Nota: No uses certificados SSL en sitios ilegales.\nSi HTTPS no funciona, comprueba que el puerto 443 esté abierto en el firewall.',
        SSLConfig: 'Configuración del certificado',
        SSLProConfig: 'Configuración del protocolo',
        supportProtocol: 'Versión de protocolo',
        encryptionAlgorithm: 'Algoritmo de cifrado',
        notSecurity: '(inseguro)',
        encryptHelper:
            "Let's Encrypt tiene límites de frecuencia para emitir certificados. Consulta la <a target='_blank' href='https://letsencrypt.org/zh-cn/docs/rate-limits/'>documentación oficial</a>.",
        ipValue: 'Valor',
        ext: 'Extensión de archivo',
        wafInputHelper: 'Introduce datos línea por línea',
        data: 'Datos',
        ever: 'Permanente',
        nextYear: 'Un año',
        noLog: 'No se encontraron logs',
        defaultServer: 'Configurar como sitio por defecto',
        noDefaultServer: 'No configurado',
        defaultServerHelper:
            'El sitio por defecto recibirá peticiones de dominios/IP no asociados.\nPreviene resoluciones maliciosas, pero anula la intercepción WAF de dominios no autorizados.',
        restoreHelper: '¿Seguro que deseas restaurar este backup?',
        websiteDeploymentHelper: 'Usa una aplicación instalada o crea una nueva aplicación para desplegar un sitio.',
        websiteStatictHelper: 'Crea un directorio de sitio estático en el host.',
        websiteProxyHelper:
            'Usa un proxy inverso para servicios existentes. Ejemplo: un servicio en el puerto 8080 → "http://127.0.0.1:8080".',
        runtimeProxyHelper: 'Usa un runtime de sitio web para crear un sitio.',
        runtime: 'Runtime',
        deleteRuntimeHelper: 'El runtime debe eliminarse junto con el sitio. Hazlo con precaución.',
        proxyType: 'Tipo de red',
        unix: 'Red Unix',
        tcp: 'Red TCP/IP',
        phpFPM: 'Config FPM',
        phpConfig: 'Config PHP',
        updateConfig: 'Actualizar configuración',
        isOn: 'Activado',
        isOff: 'Desactivado',
        rewrite: 'Reescritura (pseudoestático)',
        rewriteMode: 'Esquema',
        current: 'Actual',
        rewriteHelper: 'Si el pseudoestático causa inaccesibilidad, restaura la configuración predeterminada.',
        runDir: 'Directorio de ejecución',
        runUserHelper:
            'En entornos PHP con contenedor, asigna propietario/grupo 1000 a index y subdirectorios. En PHP local, usa el usuario/grupo de PHP-FPM.',
        userGroup: 'Usuario/Grupo',
        uGroup: 'Grupo',
        proxyPath: 'Ruta de proxy',
        proxyPass: 'URL destino',
        cache: 'Caché',
        cacheTime: 'Duración de caché',
        enableCache: 'Activar caché',
        proxyHost: 'Host de proxy',
        disabled: 'Detenido',
        startProxy: 'Se iniciará el proxy inverso. ¿Deseas continuar?',
        stopProxy: 'Se detendrá el proxy inverso. ¿Deseas continuar?',
        sourceFile: 'Ver origen',
        proxyHelper1: 'Al acceder a este directorio se devolverá el contenido del destino configurado.',
        proxyPassHelper: 'La URL destino debe ser válida y accesible.',
        proxyHostHelper: 'Pasar el dominio en la cabecera Host al servidor proxy.',
        modifier: 'Reglas de coincidencia',
        modifierHelper: 'Ejemplo: "=" coincidencia exacta, "~" regex, "^~" inicio de ruta.',
        replace: 'Reemplazos de texto',
        replaceHelper:
            'Permite sustitución de cadenas en contenido proxy (HTML, CSS, JS, etc.). Soporta regex para casos complejos.',
        addReplace: 'Añadir',
        replaced: 'Cadena de búsqueda (obligatoria)',
        replaceText: 'Reemplazar por',
        replacedErr: 'La cadena de búsqueda no puede estar vacía',
        replacedErr2: 'La cadena de búsqueda no puede repetirse',
        replacedListEmpty: 'Sin reglas de reemplazo',
        proxySslName: 'Nombre SNI de proxy',
        basicAuth: 'Autenticación básica',
        editBasicAuthHelper:
            'La contraseña está cifrada de forma asimétrica y no puede mostrarse. Editar implica restablecerla.',
        antiLeech: 'Anti-hotlink',
        extends: 'Extensiones',
        browserCache: 'Caché de navegador',
        serverCache: 'Caché del servidor',
        leechLog: 'Registrar logs anti-hotlink',
        accessDomain: 'Dominios permitidos',
        leechReturn: 'Recurso de respuesta',
        noneRef: 'Permitir Referer vacío',
        disable: 'No habilitado',
        disableLeechHelper: 'Deshabilitar protección anti-hotlink',
        disableLeech: 'Desactivar anti-hotlink',
        ipv6: 'Escuchar IPv6',
        leechReturnError: 'Introduce un código HTTP válido',
        blockedRef: 'Permitir Referer no estándar',
        accessControl: 'Control anti-hotlink',
        leechcacheControl: 'Control de caché',
        logEnableControl: 'Registrar peticiones de estáticos',
        leechSpecialValidHelper:
            'Permitir Referer vacío: peticiones sin Referer no se bloquean. Permitir Referer no estándar: se aceptan Referer que no empiecen con http/https.',
        leechInvalidReturnHelper: 'Código HTTP devuelto tras bloquear hotlinking',
        leechlogControlHelper:
            'Registrar peticiones de estáticos (deshabilitar en producción para evitar exceso de logs).',
        selectAcme: 'Seleccionar cuenta Acme',
        imported: 'Creado manualmente',
        importType: 'Tipo de importación',
        pasteSSL: 'Pegar código',
        localSSL: 'Seleccionar archivo del servidor',
        privateKeyPath: 'Archivo de clave privada',
        certificatePath: 'Archivo de certificado',
        ipWhiteListHelper: 'La lista blanca de IP ignora todas las reglas de bloqueo',
        redirect: 'Redirección',
        sourceDomain: 'Dominio origen',
        targetURL: 'URL destino',
        keepPath: 'Mantener parámetros URI',
        path: 'Ruta',
        redirectType: 'Tipo de redirección',
        redirectWay: 'Modo',
        keep: 'Mantener',
        notKeep: 'No mantener',
        redirectRoot: 'Redirigir a la home',
        redirectHelper: '301 permanente o 302 temporal',
        changePHPVersionWarn: 'Esta acción es irreversible, ¿continuar?',
        changeVersion: 'Cambiar versión',
        retainConfig: 'Conservar php-fpm.conf y php.ini',
        runDirHelper2: 'El directorio secundario debe estar bajo index',
        openrestyHelper:
            'Puertos por defecto de OpenResty → HTTP: {0}, HTTPS: {1}. Esto puede afectar redirecciones y accesos.',
        primaryDomainHelper: 'Ejemplo: ejemplo.com o ejemplo.com:8080',
        acmeAccountType: 'Tipo de cuenta',
        keyType: 'Algoritmo de clave',
        tencentCloud: 'Tencent Cloud',
        containWarn: 'El dominio incluye al principal, corrige la entrada',
        rewriteHelper2:
            'Aplicaciones como WordPress suelen tener configuración pseudoestática predefinida. Cambiarla puede causar errores.',
        websiteBackupWarn: 'Solo se admiten backups locales. Los de otras máquinas pueden fallar en la restauración',
        ipWebsiteWarn: 'Los sitios con IP como dominio deben configurarse como sitio por defecto para funcionar',
        hstsHelper: 'Habilitar HSTS mejora la seguridad',
        includeSubDomains: 'Incluir subdominios',
        hstsIncludeSubDomainsHelper: 'Al habilitarlo, la política HSTS aplicará también a los subdominios.',
        defaultHtml: 'Configurar página por defecto',
        website404: 'Página de error 404',
        domain404: 'Página no encontrada',
        indexHtml: 'Página predeterminada estática',
        stopHtml: 'Página de sitio detenido',
        indexPHP: 'Página predeterminada PHP',
        sslExpireDate: 'Fecha de expiración SSL',
        website404Helper: 'La página 404 solo aplica a sitios PHP o estáticos',
        sni: 'SNI de origen',
        sniHelper:
            'Cuando el backend proxy es HTTPS, puede ser necesario configurar el SNI. Consulta la doc del proveedor CDN.',
        huaweicloud: 'Huawei Cloud',
        createDb: 'Crear base de datos',
        enableSSLHelper: 'Si falla, no afectará la creación del sitio',
        batchAdd: 'Añadir múltiples dominios',
        generateDomain: 'Generar',
        global: 'Global',
        subsite: 'Subsitio',
        subsiteHelper: 'Un subsite puede usar un directorio PHP o estático existente como raíz.',
        parentWbeiste: 'Sitio padre',
        deleteSubsite: 'Antes de borrar este sitio elimina los subsitios {0}',
        loadBalance: 'Balanceo de carga',
        server: 'Servidor',
        algorithm: 'Algoritmo',
        ipHash: 'IP Hash',
        ipHashHelper: 'Asigna al mismo servidor las peticiones de un cliente según su IP.',
        leastConn: 'Menos conexiones',
        leastConnHelper: 'Envía peticiones al servidor con menos conexiones activas.',
        leastTime: 'Menor tiempo',
        leastTimeHelper: 'Envía peticiones al servidor con menor tiempo de conexión activa.',
        defaultHelper:
            'Método por defecto: reparte las peticiones equitativamente. Si hay pesos configurados, reparte según ellos.',
        weight: 'Peso',
        maxFails: 'Fallos máximos',
        maxConns: 'Máximo de conexiones',
        strategy: 'Estrategia',
        strategyDown: 'Baja',
        strategyBackup: 'Backup',
        ipHashBackupErr: 'IP hash does not support backup nodes',
        failTimeout: 'Tiempo de espera de fallo',
        failTimeoutHelper:
            'La duración de la ventana de tiempo para las comprobaciones de estado del servidor. Cuando el número acumulado de fallos alcanza el umbral dentro de este período, el servidor se eliminará temporalmente y se reintentará después de la misma duración. Por defecto 10 segundos',

        staticChangePHPHelper: 'Actualmente es un sitio estático, puedes cambiarlo a PHP',
        proxyCache: 'Caché de proxy inverso',
        cacheLimit: 'Límite de espacio de caché',
        shareCahe: 'Tamaño de memoria para conteo de caché',
        cacheExpire: 'Expiración de caché',
        shareCaheHelper: '1M de memoria almacena aprox. 8000 objetos',
        cacheLimitHelper: 'Se eliminará caché antigua al superar el límite',
        cacheExpireJHelper: 'Caché eliminada al expirar si no se usa',
        realIP: 'IP real',
        ipFrom: 'Origen de IP',
        ipFromHelper: 'Definiendo orígenes confiables, OpenResty analizará cabeceras HTTP para identificar la IP real.',
        ipFromExample1: 'Si el frontend es Frp: 127.0.0.1',
        ipFromExample2: 'Si el frontend es un CDN: rango IP del CDN',
        ipFromExample3: 'En caso de duda: 0.0.0.0/0 (IPv4) ::/0 (IPv6) [Nota: poco seguro]',
        http3Helper: 'HTTP/3 ofrece mayor velocidad y rendimiento, pero no todos los navegadores lo soportan.',
        cors: 'Intercambio de Recursos de Origen Cruzado (CORS)',
        enableCors: 'Habilitar CORS',
        allowOrigins: 'Dominios permitidos',
        allowMethods: 'Métodos de solicitud permitidos',
        allowHeaders: 'Encabezados de solicitud permitidos',
        allowCredentials: 'Permitir enviar cookies',
        preflight: 'Respuesta rápida a solicitud de preflight',
        preflightHleper:
            'Cuando está habilitado, cuando el navegador envía una solicitud de preflight de origen cruzado (solicitud OPTIONS), el sistema devolverá automáticamente un código de estado 204 y establecerá los encabezados de respuesta de origen cruzado necesarios',

        changeDatabase: 'Cambiar base de datos',
        changeDatabaseHelper1: 'La asociación se usa en backups/restauraciones.',
        changeDatabaseHelper2: 'Cambiar de DB invalida backups previos.',
        saveCustom: 'Guardar como plantilla',
        rainyun: 'Rain Yun',
        volcengine: 'Volcengine',
        runtimePortHelper: 'Este runtime tiene múltiples puertos, selecciona uno.',
        runtimePortWarn: 'Este runtime no tiene puertos, no se puede usar proxy',
        cacheWarn: 'Desactiva la caché en proxy inverso primero',
        loadBalanceHelper: 'Tras crear balanceo, ve a "Proxy inverso" y añade un backend: http://<nombre balanceo>',
        favorite: 'Favorito',
        cancelFavorite: 'Quitar favorito',
        useProxy: 'Usar proxy',
        useProxyHelper: 'Usa la dirección del proxy configurado en el panel',
        westCN: 'West Digital',
        openBaseDir: 'Prevenir ataques cross-site',
        openBaseDirHelper: 'open_basedir restringe rutas accesibles por PHP, protegiendo contra accesos cruzados',
        serverCacheTime: 'Tiempo de caché en servidor',
        serverCacheTimeHelper: 'Durante este tiempo, peticiones idénticas devuelven caché sin ir al backend.',
        browserCacheTime: 'Tiempo de caché en navegador',
        browserCacheTimeHelper:
            'Recursos estáticos se guardan en caché en el navegador reduciendo solicitudes repetidas.',
        donotLinkeDB: 'No vincular base de datos',
        toWebsiteDir: 'Acceder a directorio del sitio',
        execParameters: 'Parámetros de ejecución',
        extCommand: 'Comando adicional',
        mirror: 'Fuente mirror',
        execUser: 'Usuario de ejecución',
        execDir: 'Directorio de ejecución',
        packagist: 'Mirror China completo',

        batchOpreate: 'Operación en Lote',
        batchOpreateHelper: 'Lote {0} sitios web, ¿continuar operación?',
    },
    php: {
        short_open_tag: 'Soporte de etiquetas cortas',
        max_execution_time: 'Tiempo máximo de ejecución del script',
        max_input_time: 'Tiempo máximo de entrada',
        memory_limit: 'Límite de memoria del script',
        post_max_size: 'Tamaño máximo de datos POST',
        file_uploads: 'Permitir subida de archivos',
        upload_max_filesize: 'Tamaño máximo permitido para subir archivos',
        max_file_uploads: 'Cantidad máxima de archivos a subir al mismo tiempo',
        default_socket_timeout: 'Tiempo de espera del socket',
        error_reporting: 'Nivel de errores',
        display_errors: 'Mostrar información detallada de errores',
        cgi_fix_pathinfo: 'Habilitar pathinfo',
        date_timezone: 'Zona horaria',
        disableFunction: 'Deshabilitar función',
        disableFunctionHelper: 'Introduce la función a deshabilitar, como exec. Para varias, separa con comas',
        uploadMaxSize: 'Límite de subida',
        indexHelper:
            'Para garantizar el funcionamiento correcto del sitio PHP, coloca el código en el directorio index y evita renombrar',
        extensions: 'Gestionar extensiones',
        extension: 'Extensión',
        extensionHelper: 'Para varias extensiones, sepáralas con comas',
        toExtensionsList: 'Ver lista de extensiones',
        containerConfig: 'Configuración del contenedor',
        containerConfigHelper:
            'Las variables de entorno y demás se pueden modificar en Configuración - Configuración del Contenedor después de la creación',
        dateTimezoneHelper: 'Ejemplo: TZ=America/Mexico_City (ajusta según necesites)',
    },
    nginx: {
        serverNamesHashBucketSizeHelper: 'Tamaño de la tabla hash para nombres de servidor',
        clientHeaderBufferSizeHelper: 'Tamaño del buffer de cabecera solicitado por el cliente',
        clientMaxBodySizeHelper: 'Tamaño máximo de archivo subido',
        keepaliveTimeoutHelper: 'Tiempo de espera de la conexión',
        gzipMinLengthHelper: 'Tamaño mínimo para comprimir',
        gzipCompLevelHelper: 'Nivel de compresión',
        gzipHelper: 'Habilitar compresión para transmisión',
        connections: 'Conexiones activas',
        accepts: 'Aceptadas',
        handled: 'Gestionadas',
        requests: 'Solicitudes',
        reading: 'Leyendo',
        writing: 'Escribiendo',
        waiting: 'Esperando',
        status: 'Estado actual',
        configResource: 'Configuración',
        saveAndReload: 'Guardar y recargar',
        clearProxyCache: 'Limpiar caché de proxy inverso',
        clearProxyCacheWarn: 'Esta acción eliminará todos los archivos en el directorio de caché. ¿Deseas continuar?',
        create: 'Agregar nuevo módulo',
        update: 'Editar módulo',
        params: 'Parámetros',
        packages: 'Paquetes',
        script: 'Scripts',
        module: 'Módulos',
        build: 'Compilar',
        buildWarn: 'Compilar OpenResty requiere reservar CPU y memoria, puede tomar tiempo, ten paciencia',
        mirrorUrl: 'Fuente de software',
        paramsHelper: 'Por ejemplo: --add-module=/tmp/ngx_brotli',
        packagesHelper: 'Por ejemplo: git, curl (separados por coma)',
        scriptHelper:
            'Scripts a ejecutar antes de compilar, usualmente para descargar código fuente de módulos, instalar dependencias, etc.',
        buildHelper:
            'Haz clic en compilar después de agregar/modificar un módulo. OpenResty se reiniciará automáticamente tras una compilación exitosa.',
        defaultHttps: 'HTTPS Anti-manipulación',
        defaultHttpsHelper1: 'Habilitar esto puede resolver problemas de manipulación de HTTPS.',
        sslRejectHandshake: 'Rechazar handshake SSL predeterminado',
        sslRejectHandshakeHelper:
            'Habilitar esto puede evitar la fuga de certificados, establecer un sitio web predeterminado invalidará esta configuración',
    },
    ssl: {
        create: 'Solicitar',
        provider: 'Tipo',
        manualCreate: 'Creado manualmente',
        acmeAccount: 'Cuenta ACME',
        resolveDomain: 'Resolver dominio',
        err: 'Error',
        value: 'valor del registro',
        dnsResolveHelper: 'Por favor, agrega los siguientes registros en tu proveedor de DNS:',
        detail: 'Ver detalles',
        msg: 'Información',
        ssl: 'Certificado',
        key: 'Clave privada',
        startDate: 'Fecha de inicio',
        organization: 'Organización emisora',
        renewConfirm: 'Esto renovará un nuevo certificado para el dominio {0}. ¿Deseas continuar?',
        autoRenew: 'Renovación automática',
        autoRenewHelper: 'Renueva automáticamente 30 días antes de la expiración',
        renewSuccess: 'Renovación exitosa',
        renewWebsite: 'Este certificado está asociado a los siguientes sitios y se aplicará en ellos simultáneamente',
        createAcme: 'Crear cuenta',
        acmeHelper: 'La cuenta Acme se usa para solicitar certificados gratuitos',
        upload: 'Importar',
        applyType: 'Método de solicitud',
        apply: 'Renovar',
        applyStart: 'Inicia solicitud de certificado',
        getDnsResolve: 'Obteniendo valor DNS, espera...',
        selfSigned: 'Gestionar CA autofirmada',
        ca: 'Autoridad certificadora',
        commonName: 'Nombre común',
        caName: 'Nombre de CA',
        company: 'Nombre de la organización',
        department: 'Unidad organizativa',
        city: 'Ciudad',
        province: 'Estado o provincia',
        country: 'País (código de 2 letras)',
        commonNameHelper: 'Por ejemplo, ',
        selfSign: 'Emitir certificado',
        days: 'Período de validez',
        domainHelper: 'Un dominio por línea, admite * y dirección IP',
        pushDir: 'Guardar certificado en el directorio local',
        dir: 'Directorio',
        pushDirHelper: 'Se generarán los archivos "fullchain.pem" y "privkey.pem" en este directorio.',
        organizationDetail: 'Detalles de la organización',
        fromWebsite: 'Desde el sitio web',
        dnsMauanlHelper: 'En modo manual, haz clic en solicitar tras la creación para obtener el valor DNS',
        httpHelper: 'El modo HTTP requiere OpenResty instalado y no soporta certificados comodín.',
        buypassHelper: 'Buypass no es accesible desde China continental',
        googleHelper: 'Cómo obtener EAB HmacKey y EAB kid',
        googleCloudHelper: 'La API de Google Cloud no es accesible en la mayoría de China',
        skipDNSCheck: 'Omitir comprobación DNS',
        skipDNSCheckHelper: 'Solo marca si tienes problemas de timeout al solicitar el certificado.',
        cfHelper: 'No uses la clave API Global',
        deprecated: 'será obsoleto',
        deprecatedHelper: 'El soporte se ha detenido y puede eliminarse en el futuro. Usa el método Tencent Cloud.',
        disableCNAME: 'Deshabilitar CNAME',
        disableCNAMEHelper: 'Marca si el dominio tiene un CNAME y falla la solicitud.',
        nameserver: 'Servidor DNS',
        nameserverHelper: 'Usa un DNS personalizado para verificar dominios.',
        edit: 'Editar certificado',
        execShell: 'Ejecutar script tras solicitud de certificado.',
        shell: 'Contenido del script',
        shellHelper:
            'Por defecto, el script se ejecuta en el directorio de instalación de 1Panel. Si se guarda el certificado, será en ese directorio. Timeout: 30 minutos.',
        customAcme: 'Servicio ACME personalizado',
        customAcmeURL: 'URL del servicio ACME',
        baiduCloud: 'Baidu Cloud',
        pushNode: 'Sincronizar con otros nodos',
        pushNodeHelper: 'Enviar a los nodos seleccionados después de la aplicación/renovación',
        fromMaster: 'Envío desde el nodo maestro',
        hostedZoneID: 'Hosted Zone ID',
    },
    firewall: {
        create: 'Crear regla',
        edit: 'Editar regla',
        ccDeny: 'Protección CC',
        ipWhiteList: 'Lista blanca de IP',
        ipBlockList: 'Lista negra de IP',
        fileExtBlockList: 'Lista negra de extensiones de archivo',
        urlWhiteList: 'Lista blanca de URL',
        urlBlockList: 'Lista negra de URL',
        argsCheck: 'Verificación de parámetros GET',
        postCheck: 'Verificación de parámetros POST',
        cookieBlockList: 'Lista negra de cookies',
        dockerHelper:
            'El firewall actual no puede deshabilitar el mapeo de puertos de contenedores. Las aplicaciones instaladas pueden ir a la página [Instaladas] para editar los parámetros de la aplicación y configurar reglas de liberación de puertos.',
        iptablesHelper:
            'Se detectó que el sistema está usando el firewall {0}. Para cambiar a iptables, ¡desinstálelo manualmente primero!',
        quickJump: 'Acceso rápido',
        used: 'En uso',
        unUsed: 'No usado',
        dockerRestart: 'Las operaciones del firewall requieren reiniciar el servicio de Docker',
        firewallHelper: 'Firewall del sistema {0}',
        firewallNotStart: `El firewall del sistema no está habilitado actualmente. Actívalo primero.`,
        restartFirewallHelper: 'Esta operación reiniciará el firewall actual. ¿Deseas continuar?',
        stopFirewallHelper: 'Esto hará que el servidor pierda protección de seguridad. ¿Deseas continuar?',
        startFirewallHelper:
            'Tras habilitar el firewall, la seguridad del servidor podrá protegerse mejor. ¿Deseas continuar?',
        noPing: 'Deshabilitar ping',
        noPingTitle: 'Deshabilitar ping',
        noPingHelper: `Esto deshabilitará el ping, y el servidor no responderá con eco ICMP. ¿Deseas continuar?`,
        onPingHelper: 'Esto habilitará el ping, y los atacantes podrían descubrir tu servidor. ¿Deseas continuar?',
        changeStrategy: 'Cambiar la estrategia de {0}',
        changeStrategyIPHelper1:
            'Cambiar la estrategia de dirección IP a [denegar]. Después de establecerla, se prohibirá el acceso al servidor. ¿Deseas continuar?',
        changeStrategyIPHelper2:
            'Cambiar la estrategia de dirección IP a [permitir]. Después de establecerla, se restaurará el acceso normal. ¿Deseas continuar?',
        changeStrategyPortHelper1:
            'Cambiar la política de puerto a [rechazar]. Después de establecerla, se denegará el acceso externo. ¿Deseas continuar?',
        changeStrategyPortHelper2:
            'Cambiar la política de puerto a [aceptar]. Después de establecerla, se restaurará el acceso normal. ¿Deseas continuar?',
        stop: 'Detener',
        portFormatError: 'Este campo debe ser un puerto válido.',
        portHelper1: 'Puertos múltiples, ej. 8080 y 8081',
        portHelper2: 'Rango de puertos, ej. 8080-8089',
        changeStrategyHelper:
            'Cambiar estrategia de {0} [{1}] a [{2}]. Después de configurarla, {0} tendrá acceso externo como {2}. ¿Deseas continuar?',

        strategy: 'Estrategia',
        accept: 'Aceptar',
        drop: 'Rechazar',
        anyWhere: 'Cualquiera',
        address: 'IPs especificadas',
        addressHelper: 'Admite dirección IP o segmento de red',
        allow: 'Permitir',
        deny: 'Denegar',
        addressFormatError: 'Este campo debe ser una dirección IP válida.',
        addressHelper1: 'Admite dirección IP o rango de IP. Ejemplo: "172.16.10.11" o "172.16.10.0/24".',
        addressHelper2: 'Para múltiples direcciones IP, sepáralas con comas. Ejemplo: "172.16.10.11, 172.16.0.0/24".',
        allIP: 'Todas las IP',
        portRule: 'Regla | Reglas',
        createPortRule: '@:commons.button.create @.lower:firewall.portRule',
        forwardRule: 'Regla de redirección de puertos | Reglas de redirección de puertos',
        createForwardRule: '@:commons.button.create @:firewall.forwardRule',
        ipRule: 'Regla IP | Reglas IP',
        createIpRule: '@:commons.button.create @:firewall.ipRule',
        userAgent: 'Filtro User-Agent',
        sourcePort: 'Puerto de origen',
        targetIP: 'IP de destino',
        targetPort: 'Puerto de destino',
        forwardHelper1: 'Si quieres reenviar al puerto local, la IP de destino debe ser "127.0.0.1".',
        forwardHelper2: 'Deja en blanco la IP de destino para reenviar al puerto local.',
        forwardInboundInterface: 'Interfaz de Red de Entrada para Reenvío',
        exportHelper: 'A punto de exportar {0} reglas de firewall. ¿Continuar?',
        importSuccess: 'Se importaron correctamente {0} reglas',
        importPartialSuccess: 'Importación completada: {0} correctas, {1} fallidas',

        ipv4Limit: 'La operación actual solo admite direcciones IPv4',
        basicStatus: 'La cadena actual {0} no está vinculada, ¡vincule primero!',
        baseIptables: 'Servicio iptables',
        forwardIptables: 'Servicio de Reenvío de Puertos iptables',
        advanceIptables: 'Servicio de Configuración Avanzada de iptables',
        initMsg: 'A punto de inicializar {0}, ¿continuar?',
        initHelper:
            'Se detectó que {0} no está inicializado. ¡Haga clic en el botón de inicialización en la barra de estado superior para configurar!',
        bindHelper:
            'Vincular: las reglas de firewall solo surtirán efecto cuando el estado esté vinculado. ¿Confirmar?',
        unbindHelper:
            'Desvincular: al desvincular, todas las reglas de firewall agregadas se volverán inválidas. Proceda con precaución. ¿Confirmar?',
        defaultStrategy: 'La política predeterminada para la cadena actual {0} es {1}',
        defaultStrategy2:
            'La política predeterminada para la cadena actual {0} es {1}, el estado actual es no vinculado. ¡Las reglas de firewall agregadas surtirán efecto después de la vinculación!',
        filterRule: 'Regla de Filtro',
        filterHelper:
            'Las reglas de filtro le permiten controlar el tráfico de red a nivel INPUT/OUTPUT. Configure con cuidado para evitar bloquear el sistema.',
        chain: 'Cadena',
        targetChain: 'Cadena de Destino',
        sourceIP: 'IP de Origen',
        destIP: 'IP de Destino',
        inboundDirection: 'Dirección de Entrada',
        outboundDirection: 'Dirección de Salida',
        destPort: 'Puerto de Destino',
        action: 'Acción',
        reject: 'Rechazar',
        sourceIPHelper: 'Formato CIDR, ej. 192.168.1.0/24. Dejar vacío para todas las direcciones',
        destIPHelper: 'Formato CIDR, ej. 10.0.0.0/8. Dejar vacío para todas las direcciones',
        portHelper: '0 significa cualquier puerto',
        allPorts: 'Todos los Puertos',
        deleteRuleConfirm: 'Se eliminarán {0} reglas. ¿Continuar?',
    },
    runtime: {
        runtime: 'Runtime',
        workDir: 'Directorio de trabajo',
        create: 'Crear',
        localHelper: 'Para problemas de instalación en entorno local y uso en entorno sin conexión, consulte ',
        versionHelper: 'Versión de PHP, ej. v8.0',
        buildHelper: `Si se seleccionan más extensiones, el uso de CPU será mayor durante el proceso de creación de la imagen. Evita seleccionar todas las extensiones.`,
        openrestyWarn: 'PHP necesita actualizarse a OpenResty versión 1.21.4.1 o superior para poder usarse',
        toupgrade: 'Actualizar',
        edit: 'Editar runtime',
        extendHelper: `Si las extensiones que necesitas no están en la lista, puedes introducir el nombre manualmente. Ejemplo: "sockets", luego selecciona la primera.`,
        rebuildHelper: 'Tras editar la extensión, debes reconstruir la aplicación PHP para que surta efecto',
        rebuild: 'Reconstruir aplicación PHP',
        source: 'Origen de extensiones PHP',
        ustc: 'Universidad de Ciencia y Tecnología de China',
        netease: 'Netease',
        aliyun: 'Alibaba Cloud',
        tsinghua: 'Universidad de Tsinghua',
        xtomhk: 'Espejo XTOM (Hong Kong)',
        xtom: 'Espejo XTOM (Global)',
        phpsourceHelper: 'Elige una fuente adecuada según tu entorno de red.',
        appPort: 'Puerto de la aplicación',
        externalPort: 'Puerto externo',
        packageManager: 'Gestor de paquetes',
        codeDir: 'Directorio del código',
        appPortHelper: 'El puerto usado por la aplicación.',
        externalPortHelper: 'El puerto expuesto al exterior.',
        runScript: 'Script de ejecución',
        runScriptHelper:
            'La lista de comandos de inicio se obtiene desde el archivo package.json en el directorio fuente.',
        open: 'Abrir',
        operatorHelper: 'La operación {0} se ejecutará sobre el entorno de ejecución seleccionado. ¿Deseas continuar?',
        taobao: 'Taobao',
        tencent: 'Tencent',
        imageSource: 'Fuente de imagen',
        moduleManager: 'Gestión de módulos',
        module: 'Módulo',
        nodeOperatorHelper:
            '¿Quieres {0} el módulo {1}? La operación puede causar fallos en el entorno de ejecución, confirma antes de continuar',
        customScript: 'Comando de inicio personalizado',
        customScriptHelper:
            'Por favor, ingresa el comando de inicio completo, por ejemplo: npm run start. Para comandos de inicio de PM2, por favor reemplaza con pm2-runtime, de lo contrario fallará al iniciar.',
        portError: 'No repitas el mismo puerto.',
        systemRestartHelper:
            'Descripción de estado: Interrupción - fallo al obtener estado debido a reinicio del sistema',
        javaScriptHelper:
            'Proporciona un comando de inicio completo. Ejemplo: "java -jar halo.jar -Xmx1024M -Xms256M".',
        javaDirHelper: 'El directorio debe contener archivos .jar, se permiten subdirectorios',
        goHelper: 'Proporciona un comando de inicio completo. Ejemplo: "go run main.go" o "./main".',
        goDirHelper: 'El directorio o subdirectorio debe contener archivos Go o binarios.',
        extension: 'Extensión',
        installExtension: '¿Confirmas instalar la extensión {0}?',
        loadedExtension: 'Extensión cargada',
        popularExtension: 'Extensión popular',
        uninstallExtension: '¿Seguro que quieres desinstalar la extensión {0}?',
        phpConfigHelper: 'Modificar la configuración requiere reiniciar el entorno de ejecución, ¿quieres continuar?',
        operateMode: 'Modo de operación',
        dynamic: 'Dinámico',
        static: 'Estático',
        ondemand: 'Bajo demanda',
        dynamicHelper:
            'Ajusta dinámicamente el número de procesos, alta flexibilidad, adecuado para sitios con grandes fluctuaciones de tráfico o poca memoria',
        staticHelper:
            'Número fijo de procesos, adecuado para sitios con alta concurrencia y tráfico estable, alto consumo de recursos',
        ondemandHelper:
            'Los procesos se inician y destruyen bajo demanda, la utilización de recursos es óptima, pero la respuesta inicial puede ser lenta',
        max_children: 'Número máximo de procesos permitidos',
        start_servers: 'Número de procesos creados al inicio',
        min_spare_servers: 'Número mínimo de procesos inactivos',
        max_spare_servers: 'Número máximo de procesos inactivos',
        envKey: 'Nombre',
        envValue: 'Valor',
        environment: 'Variable de entorno',
        pythonHelper:
            'Proporciona un comando de inicio completo. Ejemplo: "pip install -r requirements.txt && python manage.py runserver 0.0.0.0:5000".',
        dotnetHelper: 'Proporciona un comando de inicio completo. Ejemplo: "dotnet MyWebApp.dll".',
        dirHelper: 'Nota: rellena la ruta del directorio dentro del contenedor',
        concurrency: 'Esquema de concurrencia',
        loadStatus: 'Estado de carga',
        extraHosts: 'Mapeo de host',
    },
    process: {
        pid: 'ID de proceso',
        ppid: 'ID de proceso padre',
        numThreads: 'Hilos',
        memory: 'Memoria',
        diskRead: 'Lectura de disco',
        diskWrite: 'Escritura en disco',
        netSent: 'Tráfico de salida',
        netRecv: 'Tráfico de entrada',
        numConnections: 'Conexiones',
        startTime: 'Hora de inicio',
        running: 'En ejecución',
        sleep: 'En espera',
        stop: 'Detenido',
        idle: 'Inactivo',
        zombie: 'Proceso zombi',
        wait: 'Esperando',
        lock: 'Bloqueo',
        blocked: 'Bloqueado',
        cmdLine: 'Comando de inicio',
        basic: 'Básico',
        mem: 'Memoria',
        openFiles: 'Archivos abiertos',
        env: 'Entorno',
        noenv: 'Ninguno',
        net: 'Conexiones de red',
        laddr: 'Dirección/puerto local',
        raddr: 'Dirección/puerto remoto',
        stopProcess: 'Finalizar',
        viewDetails: 'Ver detalles',
        stopProcessWarn: '¿Seguro que deseas finalizar este proceso (PID:{0})?',
        kill: 'Terminar Proceso',
        killNow: 'Terminar Ahora',
        killHelper: 'Terminar el proceso {0} puede hacer que algunos programas funcionen incorrectamente. ¿Continuar?',
        processName: 'Nombre del proceso',
    },
    tool: {
        supervisor: {
            loadStatusErr: 'No se pudo obtener el estado del proceso, verifica el estado del servicio Supervisor.',
            notSupport:
                'Servicio Supervisor no detectado, ve a la página de librería de scripts para instalarlo manualmente',
            list: 'Procesos en segundo plano',
            config: 'Configuración de Supervisor',
            primaryConfig: 'Ubicación del archivo de configuración principal',
            notSupportCtl: `No se detectó supervisorctl, ve a la página de librería de scripts para instalarlo manualmente`,
            user: 'Usuario',
            command: 'Comando',
            dir: 'Directorio',
            numprocs: 'Número de procesos',
            initWarn:
                'Esto modificará el valor de "files" en la sección "[include]" del archivo de configuración principal. El directorio de otros archivos de configuración será: "{directorio de instalación de 1Panel}/1panel/tools/supervisord/supervisor.d/".',
            operatorHelper: 'La operación {1} se ejecutará en {0}, ¿quieres continuar?',
            uptime: 'Tiempo en ejecución',
            notStartWarn: `Supervisor no está iniciado. Inícialo primero.`,
            serviceName: 'Nombre del servicio',
            initHelper:
                'El servicio Supervisor está detectado pero no inicializado. Haz clic en el botón de inicialización en la barra de estado superior para configurarlo.',
            serviceNameHelper:
                'Nombre del servicio Supervisor gestionado por systemctl, normalmente supervisor o supervisord',
            restartHelper:
                'Esto reiniciará el servicio después de la inicialización, lo que detendrá todos los procesos en segundo plano existentes.',
            RUNNING: 'En ejecución',
            STOPPED: 'Detenido',
            STOPPING: 'Deteniéndose',
            STARTING: 'Iniciándose',
            FATAL: 'Fallo al iniciar',
            BACKOFF: 'Excepción al iniciar',
            ERROR: 'Error',
            statusCode: 'Código de estado',
            manage: 'Gestión',
            autoRestart: 'Reinicio automático',
            EXITED: 'Finalizado',
            autoRestartHelper: 'Indica si el programa se reinicia automáticamente tras un fallo',
            autoStart: 'Inicio automático',
            autoStartHelper: 'Indica si el servicio se inicia automáticamente cuando arranca Supervisor',
        },
    },
    disk: {
        management: 'Gestión de discos',
        partition: 'Partición',
        unmount: 'Desmontar',
        unmountHelper: '¿Quieres desmontar la partición {0}?',
        mount: 'Montar',
        partitionAlert:
            'El particionado de disco requiere formatearlo, y los datos existentes se eliminarán. Guarda o realiza snapshots de tus datos previamente.',
        mountPoint: 'Directorio de montaje',
        systemDisk: 'Disco del sistema',
        unpartitionedDisk: 'Disco sin particionar',
        handlePartition: 'Particionar ahora',
        filesystem: 'Sistema de archivos',
        unmounted: 'No montado',
        cannotOperate: 'No se puede operar',
        systemDiskHelper: 'Aviso: El disco actual es el disco del sistema. No se puede operar sobre él.',
        autoMount: 'Montaje automático',
        model: 'Modelo del dispositivo',
        diskType: 'Tipo de disco',
        serial: 'Núm. de serie',
    },
    xpack: {
        expiresTrialAlert:
            'Aviso: Tu prueba de Pro expirará en {0} días y todas las funciones Pro dejarán de estar disponibles. Renueva o actualiza a la versión completa a tiempo.',
        expiresAlert:
            'Aviso: Tu licencia Pro expirará en {0} días y todas las funciones Pro dejarán de estar disponibles. Renueva pronto para asegurar el uso continuo.',
        menu: 'Pro',
        upage: 'Constructor Web con IA',
        proAlert: 'Actualiza a Pro para usar esta función',
        app: {
            app: 'APP',
            title: 'Alias del Panel',
            titleHelper: 'El alias del panel se usa para mostrar en la APP (alias por defecto)',
            qrCode: 'Código QR',
            apiStatusHelper: 'La APP del Panel necesita que la API esté habilitada',
            apiInterfaceHelper: 'Permite acceso a la API del panel (debe estar habilitada para la APP)',
            apiInterfaceHelper1:
                'El acceso requiere añadir el visitante a la lista blanca; para IPs dinámicas se recomienda usar 0.0.0.0/0 (IPv4) o ::/0 (IPv6)',
            qrCodeExpired: 'Tiempo de refresco',
            apiLeakageHelper: 'No divulgues el código QR. Úsalo solo en entornos de confianza.',
        },
        waf: {
            name: 'WAF',
            blackWhite: 'Lista Blanca y Negra',
            globalSetting: 'Configuración Global',
            websiteSetting: 'Configuración del Sitio',
            blockRecords: 'Registros Bloqueados',
            world: 'Mundial',
            china: 'China',
            intercept: 'Intercepciones',
            request: 'Peticiones',
            count4xx: 'Cantidad 4xx',
            count5xx: 'Cantidad 5xx',
            todayStatus: 'Estado de hoy',
            reqMap: 'Mapa de ataques (últimos 30 días)',
            resource: 'Fuente',
            count: 'Cantidad',
            hight: 'Alto',
            low: 'Bajo',
            reqCount: 'Solicitudes',
            interceptCount: 'Número de intercepciones',
            requestTrends: 'Tendencia de solicitudes (últimos 7 días)',
            interceptTrends: 'Tendencia de intercepciones (últimos 7 días)',
            whiteList: 'Whitelist',
            blackList: 'Blacklist',
            ipBlackListHelper: 'Las IP en la blacklist no pueden acceder al sitio web',
            ipWhiteListHelper: 'Las IP en la whitelist saltan todas las restricciones',
            uaBlackListHelper: 'Las peticiones con User-Agent en blacklist serán bloqueadas',
            uaWhiteListHelper: 'Las peticiones con User-Agent en whitelist saltan todas las restricciones',
            urlBlackListHelper: 'Las peticiones a URLs en blacklist serán bloqueadas',
            urlWhiteListHelper: 'Las peticiones a URLs en whitelist saltan todas las restricciones',
            ccHelper:
                'Si un sitio recibe más de {1} peticiones de la misma IP en {0} segundos, la IP será bloqueada por {2}',
            blockTime: 'Duración de bloqueo',
            attackHelper: 'Si las intercepciones acumuladas superan {1} en {0} segundos, la IP se bloquea por {2}',
            notFoundHelper: 'Si el número de errores 404 supera {1} en {0} segundos, la IP será bloqueada por {2}',
            frequencyLimit: 'Límite de frecuencia',
            regionLimit: 'Límite regional',
            defaultRule: 'Reglas por defecto',
            accessFrequencyLimit: 'Límite de frecuencia de acceso',
            attackLimit: 'Límite de frecuencia de ataques',
            notFoundLimit: 'Límite de 404',
            urlLimit: 'Límite de frecuencia por URL',
            urlLimitHelper: 'Configura el límite de acceso para una URL específica',
            sqliDefense: 'Protección contra SQL Injection',
            sqliHelper: 'Detecta SQL Injection en peticiones y las bloquea',
            xssHelper: 'Detecta XSS en peticiones y las bloquea',
            xssDefense: 'Protección contra XSS',
            uaDefense: 'Reglas contra User-Agent malicioso',
            uaHelper: 'Incluye reglas para bots maliciosos comunes',
            argsDefense: 'Reglas contra parámetros maliciosos',
            argsHelper: 'Bloquea peticiones con parámetros maliciosos',
            cookieDefense: 'Reglas contra cookies maliciosas',
            cookieHelper: 'Prohíbe cookies maliciosas en las peticiones',
            headerDefense: 'Reglas contra cabeceras maliciosas',
            headerHelper: 'Prohíbe cabeceras maliciosas en las peticiones',
            httpRule: 'Reglas de métodos HTTP',
            httpHelper:
                'Define qué métodos HTTP están permitidos. Ejemplo: solo GET. Para restringir, desactiva los métodos no deseados',
            geoRule: 'Restricciones geográficas',
            geoHelper: 'Restringe accesos desde ciertas regiones. Ejemplo: permitir solo China, bloqueando el resto',
            ipLocation: 'Ubicación IP',
            action: 'Acción',
            ruleType: 'Tipo de ataque',
            ipHelper: 'Introduce la dirección IP',
            attackLog: 'Log de ataques',
            rule: 'Regla',
            ipArr: 'Rango IPv4',
            ipStart: 'IP inicio',
            ipEnd: 'IP fin',
            ipv4: 'IPv4',
            ipv6: 'IPv6',
            urlDefense: 'Reglas de URL',
            urlHelper: 'URL prohibida',
            dirFilter: 'Filtro de directorios',
            sqlInject: 'SQL Injection',
            xss: 'XSS',
            phpExec: 'Ejecución de scripts PHP',
            oneWordTrojan: 'Troyano de una línea',
            appFilter: 'Filtrado de directorios peligrosos',
            webshell: 'Webshell',
            args: 'Parámetros maliciosos',
            protocolFilter: 'Filtro de protocolos',
            javaFilter: 'Filtro de ficheros Java peligrosos',
            scannerFilter: 'Filtro de escáneres',
            escapeFilter: 'Filtro de escapes',
            customRule: 'Reglas personalizadas',
            httpMethod: 'Filtro de métodos HTTP',
            fileExt: 'Restricción de extensiones',
            fileExtHelper: 'Extensiones prohibidas para subir',
            deny: 'Prohibir',
            allow: 'Permitir',
            field: 'Objeto',
            pattern: 'Condición',
            ruleContent: 'Contenido',
            contain: 'contiene',
            equal: 'igual',
            regex: 'expresión regular',
            notEqual: 'distinto',
            customRuleHelper: 'Acciones basadas en condiciones definidas',
            actionAllow: 'Permitir',
            blockIP: 'Bloquear IP',
            code: 'Código de respuesta',
            noRes: 'Desconectar (444)',
            badReq: 'Parámetros inválidos (400)',
            forbidden: 'Acceso prohibido (403)',
            serverErr: 'Error de servidor (500)',
            resHtml: 'Página de respuesta',
            allowHelper: 'Permitir acceso salta las siguientes reglas del WAF, úsalo con precaución',
            captcha: 'Verificación humano-máquina',
            fiveSeconds: 'Verificación de 5 segundos',
            location: 'Región',
            redisConfig: 'Configuración Redis',
            redisHelper: 'Habilita Redis para persistir IPs bloqueadas temporalmente',
            wafHelper: 'Todos los sitios perderán protección al deshabilitar',
            attackIP: 'IP atacante',
            attackParam: 'Detalles del ataque',
            execRule: 'Regla aplicada',
            acl: 'ACL',
            sql: 'SQL Injection',
            cc: 'Límite de frecuencia de acceso',
            isBlocking: 'Bloqueado',
            isFree: 'Libre',
            unLock: 'Desbloquear',
            unLockHelper: '¿Quieres desbloquear la IP: {0}?',
            saveDefault: 'Guardar por defecto',
            saveToWebsite: 'Aplicar al sitio web',
            saveToWebsiteHelper: '¿Aplicar esta configuración a todos los sitios?',
            websiteHelper:
                'Estas son configuraciones por defecto al crear sitios. Para aplicar, edítalo en el sitio específico',
            websiteHelper2:
                'Configuraciones por defecto para sitios nuevos, modifica en cada sitio para que tengan efecto',
            ipGroup: 'Grupo de IPs',
            ipGroupHelper: 'Una IP o rango por línea. Soporta IPv4 e IPv6. Ejemplo: 192.168.1.1 o 192.168.1.0/24',
            ipBlack: 'IP blacklist',
            openRestyAlert: 'Se requiere versión de OpenResty mayor a {0}',
            initAlert:
                'La primera vez es necesario inicializar. El archivo de configuración será modificado y la configuración previa se perderá. Haz copia de seguridad',
            initHelper: 'La inicialización borrará la configuración existente del WAF. ¿Seguro que quieres continuar?',
            mainSwitch: 'Interruptor principal',
            websiteAlert: 'Crea un sitio primero',
            defaultUrlBlack: 'Reglas de URL',
            htmlRes: 'Página de intercepción',
            urlSearchHelper: 'Introduce la URL (búsqueda difusa)',
            toCreate: 'Crear',
            closeWaf: 'Cerrar WAF',
            closeWafHelper: 'Cerrar WAF desprotege el sitio. ¿Continuar?',
            addblack: 'Añadir a blacklist',
            addwhite: 'Añadir a whitelist',
            addblackHelper: '¿Añadir IP:{0} a la blacklist?',
            addwhiteHelper: '¿Añadir IP:{0} a la whitelist?',
            defaultUaBlack: 'Regla de User-Agent',
            defaultIpBlack: 'Grupo de IPs maliciosas',
            cookie: 'Reglas de cookies',
            urlBlack: 'Blacklist de URL',
            uaBlack: 'Blacklist de User-Agent',
            attackCount: 'Límite de frecuencia de ataques',
            fileExtCheck: 'Restricción de subida',
            geoRestrict: 'Restricción geográfica',
            attacklog: 'Registro de intercepciones',
            unknownWebsite: 'Acceso a dominio no autorizado',
            geoRuleEmpty: 'La región no puede estar vacía',
            unknown: 'Sitio no existe',
            geo: 'Restricción por región',
            revertHtml: '¿Restaurar {0} como página por defecto?',
            five_seconds: 'Verificación de 5 segundos',
            header: 'Reglas de cabeceras',
            methodWhite: 'Reglas HTTP',
            expiryDate: 'Fecha de expiración',
            expiryDateHelper: 'Tras validación exitosa, no se verificará de nuevo durante el periodo de validez',
            defaultIpBlackHelper: 'IPs maliciosas recopiladas de internet para bloquear accesos',
            notFoundCount: 'Límite de errores 404',
            matchValue: 'Valor de coincidencia',
            headerName: 'Debe iniciar con letra o número, admite "-", longitud 3-30',
            cdnHelper: 'Para webs con CDN, obtener IP real aquí',
            clearLogWarn: 'No podrás recuperar los logs borrados. ¿Continuar?',
            commonRuleHelper: 'Las reglas usan coincidencia difusa',
            blockIPHelper:
                'Las IP bloqueadas se guardan temporalmente en OpenResty y se liberan tras reinicio. Para bloqueo permanente usa reglas',
            addWhiteUrlHelper: '¿Añadir URL {0} a la whitelist?',
            dashHelper: 'La versión community también soporta configuraciones globales y de sitio',
            wafStatusHelper: 'WAF no está activo, habilítalo en Configuración Global',
            ccMode: 'Modo',
            global: 'Modo global',
            uriMode: 'Modo URL',
            globalHelper: 'Modo global: cuando el total de peticiones a cualquier URL supera el límite en el periodo',
            uriModeHelper: 'Modo URL: cuando las peticiones a una URL superan el límite en el periodo',
            ip: 'Blacklist de IPs',
            globalSettingHelper:
                'Las configuraciones con etiqueta [Website] requieren activarse también en la Configuración del Sitio',
            globalSettingHelper2: 'Debe habilitarse en [Configuración Global] y [Configuración del Sitio] a la vez',
            urlCCHelper: 'Más de {1} peticiones a esta URL en {0} segundos bloquean la IP por {2}',
            urlCCHelper2: 'La URL no puede contener parámetros',
            notContain: 'No contiene',
            urlcc: 'Límite de frecuencia por URL',
            method: 'Método de petición',
            addIpsToBlock: 'Bloqueo masivo de IPs',
            addUrlsToWhite: 'Añadir URLs en whitelist en lote',
            noBlackIp: 'IP ya bloqueada',
            noWhiteUrl: 'URL ya en whitelist',
            spiderIpHelper:
                'Incluye Baidu, Bing, Google, 360, Shenma, Sogou, ByteDance, DuckDuckGo, Yandex. Al cerrar se bloquea todo acceso de crawlers',
            spiderIp: 'Pool de IPs de crawlers',
            geoIp: 'Base de datos IP',
            geoIpHelper: 'Usada para geolocalizar IPs',
            stat: 'Reporte de ataques',
            statTitle: 'Reporte',
            attackIp: 'IP',
            attackCountNum: 'Cantidad',
            percent: 'Porcentaje',
            addblackUrlHelper: '¿Añadir URL {0} a la blacklist?',
            rce: 'Remote Code Execution',
            software: 'Software',
            cveHelper: 'Incluye vulnerabilidades de software y frameworks comunes',
            vulnCheck: 'Reglas adicionales',
            ssrf: 'Vulnerabilidad SSRF',
            afr: 'Lectura arbitraria de ficheros',
            ua: 'Acceso no autorizado',
            id: 'Divulgación de información',
            aa: 'Bypass de autenticación',
            dr: 'Directory Traversal',
            xxe: 'Vulnerabilidad XXE',
            suid: 'Vulnerabilidad de serialización',
            dos: 'Denegación de servicio',
            afd: 'Descarga arbitraria de ficheros',
            sqlInjection: 'SQL Injection',
            afw: 'Escritura arbitraria de ficheros',
            il: 'Fuga de información',
            clearAllLog: 'Borrar todos los logs',
            exportLog: 'Exportar logs',
            appRule: 'Reglas de aplicación',
            appRuleHelper: 'Reglas de apps comunes, reduce falsos positivos. Un sitio solo puede usar una regla',
            logExternal: 'Excluir tipos de registros',
            ipWhite: 'Whitelist de IPs',
            urlWhite: 'Whitelist de URLs',
            uaWhite: 'Whitelist de User-Agent',
            logExternalHelper:
                'Tipos de registro excluidos no se guardan. Whitelist/blacklist, restricciones regionales y reglas generan muchos logs, se recomienda excluir',
            ssti: 'Ataque SSTI',
            crlf: 'Inyección CRLF',
            strict: 'Modo estricto',
            strictHelper: 'Usa reglas más estrictas para validar peticiones',
            saveLog: 'Guardar log',
            remoteURLHelper: 'La URL remota debe tener solo una IP por línea y sin otros caracteres',
            notFound: 'No encontrado (404)',
            serviceUnavailable: 'Servicio no disponible (503)',
            gatewayTimeout: 'Tiempo de espera de gateway (504)',
            belongToIpGroup: 'Pertenece a grupo de IPs',
            notBelongToIpGroup: 'No pertenece a grupo de IPs',
            unknownWebsiteKey: 'Dominio desconocido',
            special: 'Especial',
            fileToLarge: 'Archivo supera 1MB y no puede subirse',
            uploadOverLimit: 'El archivo supera el límite, máximo 1',
            importRuleHelper: 'Una regla por línea',
        },
        monitor: {
            name: 'Monitorización Web',
            pv: 'Page Views (PV)',
            uv: 'Unique Visitors (UV)',
            flow: 'Tráfico',
            ip: 'IP',
            spider: 'Crawler',
            visitors: 'Tendencia de visitantes',
            today: 'Hoy',
            last7days: 'Últimos 7 días',
            last30days: 'Últimos 30 días',
            uvMap: 'Mapa de visitantes (30 días)',
            qps: 'Solicitudes en tiempo real (por minuto)',
            flowSec: 'Tráfico en tiempo real (por minuto)',
            excludeCode: 'Excluir códigos de estado',
            excludeUrl: 'Excluir URLs',
            excludeExt: 'Excluir extensiones',
            cdnHelper: 'Obtiene la IP real desde la cabecera del CDN',
            reqRank: 'Ranking de visitas',
            refererDomain: 'Dominio referente',
            os: 'Sistema operativo',
            browser: 'Navegador/Cliente',
            device: 'Dispositivo',
            showMore: 'Más',
            unknown: 'Otro',
            pc: 'PC',
            mobile: 'Móvil',
            wechat: 'WeChat',
            machine: 'Máquina',
            tencent: 'Navegador Tencent',
            ucweb: 'UC Browser',
            '2345explorer': '2345 Browser',
            huaweibrowser: 'Navegador Huawei',
            log: 'Logs de solicitudes',
            statusCode: 'Código de estado',
            requestTime: 'Tiempo de respuesta',
            flowRes: 'Tráfico de respuesta',
            method: 'Método HTTP',
            statusCodeHelper: 'Introduce el código de estado',
            statusCodeError: 'Código de estado inválido',
            methodHelper: 'Introduce el método HTTP',
            all: 'Todos',
            baidu: 'Baidu',
            google: 'Google',
            bing: 'Bing',
            bytes: 'Bytedance',
            sogou: 'Sogou',
            failed: 'Error',
            ipCount: 'Número de IPs',
            spiderCount: 'Solicitudes de crawlers',
            averageReqTime: 'Tiempo de respuesta medio',
            totalFlow: 'Tráfico total',
            logSize: 'Tamaño de logs',
            realIPType: 'Método de obtención de IP real',
            fromHeader: 'Desde cabecera HTTP',
            fromHeaders: 'Desde lista de cabeceras',
            header: 'Cabecera HTTP',
            cdnConfig: 'Configuración CDN',
            xff1: 'Proxy nivel 1 (X-Forwarded-For)',
            xff2: 'Proxy nivel 2 (X-Forwarded-For)',
            xff3: 'Proxy nivel 3 (X-Forwarded-For)',
            xffHelper: 'Ejemplo: X-Forwarded-For: <cliente>,<proxy1>,<proxy2>,<proxy3>. El último proxy es <proxy3>',
            headersHelper: 'Obtiene la IP real de cabeceras comunes de CDN, tomando la primera disponible',
            monitorCDNHelper: 'Modificar la config de CDN en monitorización también actualiza la del WAF',
            wafCDNHelper: 'Modificar la config de CDN en el WAF también actualiza la monitorización',
            statusErr: 'Formato de código de estado inválido',
            shenma: 'Shenma',
            duckduckgo: 'DuckDuckGo',
            '360': '360 Search',
            excludeUri: 'Excluir URIs',
            top100Helper: 'Mostrar top 100',
            logSaveDay: 'Retención de logs (días)',
            cros: 'Chrome OS',
            theworld: 'TheWorld Browser',
            edge: 'Microsoft Edge',
            maxthon: 'Maxthon Browser',
            monitorStatusHelper: 'Monitorización no habilitada, actívala en Configuración',
            excludeIp: 'Excluir IPs',
            excludeUa: 'Excluir User-Agent',
            remotePort: 'Puerto remoto',
            unknown_browser: 'Navegador desconocido',
            unknown_os: 'SO desconocido',
            unknown_device: 'Dispositivo desconocido',
            logSaveSize: 'Tamaño máximo de logs',
            logSaveSizeHelper: 'Tamaño máximo de log por sitio',
            '360se': '360 Secure Browser',
            websites: 'Lista de sitios',
            trend: 'Estadísticas de tendencias',
            reqCount: 'Número de solicitudes',
            uriHelper: 'Puedes usar /test/* o /*/index.php para excluir URIs',
        },
        tamper: {
            tamper: 'Protección contra manipulación web',
            ignoreTemplate: 'Plantilla de Exclusión',
            protectTemplate: 'Plantilla de Protección',
            ignoreTemplateHelper:
                'Ingrese contenido de exclusión, separado por Enter o espacio. (Directorio específico ./log o nombre de directorio tmp, para excluir archivos necesita ingresar archivo específico ./data/test.html)',
            protectTemplateHelper:
                'Ingrese contenido de protección, separado por Enter o espacio. (Archivo específico ./index.html, extensión de archivo .html, tipo de archivo js, para proteger directorios necesita ingresar directorio específico ./log)',
            templateContent: 'Contenido de Plantilla',
            template: 'Plantilla',
            saveTemplate: 'Guardar como Plantilla',
            tamperHelper1:
                'Para sitios web de implementación con un clic, se recomienda habilitar la protección contra manipulaciones del directorio de aplicaciones; si el sitio web no se puede usar normalmente o falla la copia de seguridad/restauración, desactive primero la protección contra manipulaciones;',
            tamperHelper2:
                'Restringirá las operaciones de lectura/escritura, eliminación, permisos y modificación de propietario para archivos protegidos en directorios no excluidos',
            tamperPath: 'Directorio de Protección',
            tamperPathEdit: 'Modificar Ruta',
            log: 'Registro de Bloqueo',
            totalProtect: 'Protección Total',
            todayProtect: 'Protección de Hoy',
            templateRule: 'Longitud 1-512, el nombre no puede contener {0} y otros símbolos',
            ignore: 'Excluir',
            ignoreHelper:
                'Seleccione o ingrese contenido de exclusión, separado por Enter o espacio. (Directorio específico ./log o nombre de directorio tmp, para excluir archivos necesita ingresar o seleccionar archivo específico ./data/test.html)',
            protect: 'Proteger',
            protectHelper:
                'Seleccione o ingrese contenido de protección, separado por Enter o espacio. (Archivo específico ./index.html, extensión de archivo .html, tipo de archivo js, para proteger directorios necesita ingresar o seleccionar directorio específico ./log)',
            tamperHelper00: 'La exclusión y protección solo admiten rutas relativas;',
            tamperHelper01:
                'Después de habilitar la protección contra manipulaciones, el sistema restringirá las operaciones de creación, edición y eliminación de archivos protegidos en directorios no excluidos;',
            tamperHelper02:
                'Prioridad: Protección de ruta específica > Exclusión de ruta específica > Protección > Exclusión',
            tamperHelper03:
                'Las operaciones de monitoreo solo se dirigen a directorios no excluidos, monitoreando la creación de archivos no protegidos en estos directorios.',
            disableHelper:
                'A punto de desactivar la protección contra manipulaciones para los siguientes sitios web, ¿continuar?',
            appendOnly: 'Solo añadir',
            appendOnlyHelper:
                'Restringe el borrado en este directorio, solo se permite añadir directorios excluidos o archivos no protegidos',
            immutable: 'Inmutable',
            immutableHelper: 'Restringe edición, borrado, permisos y cambio de propietario del archivo',
            onWatch: 'Monitorización',
            onWatchHelper:
                'Monitoriza y bloquea la creación de archivos protegidos o directorios no excluidos en este directorio',
            forceStop: 'Forzar cierre',
            forceStopHelper: 'Se forzará la desactivación de la función anti-manipulación en este sitio. ¿Continuar?',
        },
        setting: {
            setting: 'Configuración del panel',
            title: 'Descripción del panel',
            titleHelper:
                'Se mostrará en la página de login (ej.: Panel de administración de servidores Linux, recomendado 8-15 caracteres)',
            logo: 'Logo (sin texto)',
            logoHelper:
                'Se mostrará arriba a la izquierda cuando el menú esté colapsado (tamaño recomendado: 82px*82px)',
            logoWithText: 'Logo (con texto)',
            logoWithTextHelper:
                'Se mostrará arriba a la izquierda cuando el menú esté expandido (tamaño recomendado: 185px*55px)',
            favicon: 'Icono del sitio',
            faviconHelper: 'Icono del sitio (tamaño recomendado: 16px*16px)',
            setDefault: 'Restaurar por defecto',
            setHelper: 'Se guardará la configuración actual. ¿Continuar?',
            setDefaultHelper: 'Todas las configuraciones se restaurarán a valores por defecto. ¿Continuar?',
            logoGroup: 'Logo',
            imageGroup: 'Imagen',
            loginImage: 'Imagen de login',
            loginImageHelper: 'Se muestra en la página de login (tamaño recomendado: 500*416px)',
            loginBgType: 'Tipo de fondo de login',
            loginBgImage: 'Imagen de fondo de login',
            loginBgImageHelper: 'Se muestra como fondo de la página de login (tamaño recomendado: 1920*1080px)',
            loginBgColor: 'Color de fondo de login',
            loginBgColorHelper: 'Se muestra como color de fondo en la página de login',
            image: 'Imagen',
            bgColor: 'Color de fondo',
            loginGroup: 'Página de login',
            loginBtnLinkColor: 'Color de botones/enlaces',
            loginBtnLinkColorHelper: 'Se aplica a botones y enlaces en la página de login',
        },
        helper: {
            wafTitle1: 'Mapa de Intercepciones',
            wafContent1: 'Muestra la distribución geográfica de intercepciones en los últimos 30 días',
            wafTitle2: 'Restricciones de Acceso Regional',
            wafContent2: 'Restringe las fuentes de acceso al sitio web según la ubicación geográfica',
            wafTitle3: 'Página de Intercepción Personalizada',
            wafContent3: 'Crea una página personalizada que se muestre tras interceptar una petición',
            wafTitle4: 'Reglas Personalizadas (ACL)',
            wafContent4: 'Intercepta peticiones según reglas definidas por el usuario',
            tamperTitle1: 'Monitoreo de Integridad de Archivos',
            tamperContent1:
                'Supervisa la integridad de los archivos del sitio, incluyendo archivos core, scripts y de configuración.',
            tamperTitle2: 'Escaneo y Detección en Tiempo Real',
            tamperContent2:
                'Detecta archivos anómalos o manipulados escaneando en tiempo real el sistema de archivos del sitio.',
            tamperTitle3: 'Configuración de Permisos de Seguridad',
            tamperContent3:
                'Restringe el acceso a archivos del sitio mediante permisos adecuados y políticas de control de acceso, reduciendo la superficie de ataque.',
            tamperTitle4: 'Registro y Análisis',
            tamperContent4:
                'Registra accesos y operaciones sobre archivos para auditoría y análisis posteriores, ayudando a detectar amenazas de seguridad.',
            settingTitle1: 'Mensaje de Bienvenida Personalizado',
            settingContent1: 'Configura un mensaje de bienvenida en la página de login de 1Panel.',
            settingTitle2: 'Logo Personalizado',
            settingContent2: 'Permite subir logos con nombres de marca u otro texto.',
            settingTitle3: 'Icono del Sitio Web',
            settingContent3:
                'Permite subir un icono personalizado para reemplazar el favicon por defecto, mejorando la experiencia del usuario.',
            monitorTitle1: 'Tendencia de Visitantes',
            monitorContent1: 'Genera estadísticas y muestra la tendencia de visitantes del sitio web',
            monitorTitle2: 'Mapa de Visitantes',
            monitorContent2: 'Muestra la distribución geográfica de los visitantes del sitio',
            monitorTitle3: 'Estadísticas de Acceso',
            monitorContent3:
                'Genera estadísticas de solicitudes al sitio web, incluyendo crawlers, dispositivos de acceso, estados de respuesta, etc.',
            monitorTitle4: 'Monitoreo en Tiempo Real',
            monitorContent4:
                'Supervisa en tiempo real la información de peticiones al sitio web, incluyendo número de solicitudes y tráfico.',
            alertTitle1: 'Alertas por SMS',
            alertContent1:
                'Cuando se detecta uso anómalo de recursos del servidor, expiración de sitios o certificados, nueva versión disponible o expiración de contraseñas, los usuarios son notificados por SMS para garantizar respuesta oportuna.',
            alertTitle2: 'Registro de Alertas',
            alertContent2:
                'Permite a los usuarios consultar el historial de alertas para facilitar el seguimiento y análisis de eventos pasados.',
            alertTitle3: 'Configuración de Alertas',
            alertContent3:
                'Permite configurar números de teléfono, frecuencia y horarios de notificación para alertas más personalizadas.',
            nodeTitle1: 'Adición de Nodo en un Clic',
            nodeContent1: 'Integra rápidamente múltiples nodos de servidor',
            nodeTitle2: 'Actualización en Lote',
            nodeContent2: 'Sincroniza y actualiza todos los nodos con una sola operación',
            nodeTitle3: 'Monitoreo del Estado de Nodos',
            nodeContent3: 'Supervisa en tiempo real el estado operativo de cada nodo',
            nodeTitle4: 'Conexión Remota Rápida',
            nodeContent4: 'Conecta directamente a la terminal remota de un nodo con un clic',
            fileExchangeTitle1: 'Transmisión con Autenticación por Claves',
            fileExchangeContent1: 'Autenticación vía claves SSH para garantizar seguridad en la transmisión.',
            fileExchangeTitle2: 'Sincronización de Archivos Eficiente',
            fileExchangeContent2:
                'Solo se sincroniza el contenido modificado, mejorando velocidad y estabilidad de transmisión.',
            fileExchangeTitle3: 'Intercomunicación Multi-Nodo',
            fileExchangeContent3:
                'Permite transferir fácilmente archivos entre diferentes nodos y gestionar múltiples servidores de forma flexible.',
            appTitle1: 'Gestión Flexible del Panel',
            appContent1: 'Gestiona tu servidor 1Panel en cualquier momento y lugar.',
            appTitle2: 'Información Completa de Servicios',
            appContent2:
                'Administra aplicaciones básicas, sitios web, Docker, bases de datos, etc., y crea nuevos servicios desde la app móvil.',
            appTitle3: 'Monitoreo de Anomalías en Tiempo Real',
            appContent3:
                'Consulta en la app móvil el estado del servidor, la seguridad WAF, estadísticas de tráfico web y la salud de procesos.',
            clusterTitle1: 'Despliegue Maestro-Esclavo',
            clusterContent1:
                'Soporta creación de instancias maestro-esclavo de MySQL/Postgres/Redis en distintos nodos, completando la asociación e inicialización automáticamente',
            clusterTitle2: 'Gestión Maestro-Esclavo',
            clusterContent2:
                'Página centralizada para gestionar múltiples nodos maestro-esclavo, ver sus roles y estado de ejecución.',
            clusterTitle3: 'Estado de Replicación',
            clusterContent3:
                'Muestra estado de replicación maestro-esclavo y retrasos, ayudando a diagnosticar problemas de sincronización',
        },
        node: {
            master: 'Nodo Principal',
            masterBackup: 'Respaldo del Nodo Principal',
            backupNode: 'Nodo de Respaldo',
            backupFrequency: 'Frecuencia de Respaldo (horas)',
            backupCopies: 'Copias de Retención de Respaldo',
            noBackupNode: 'Actualmente no hay nodo de respaldo configurado. Selecciona uno y vuelve a intentarlo.',
            masterBackupAlert:
                'No se ha configurado un respaldo del nodo principal. Para garantizar la seguridad de los datos, configura un nodo de respaldo lo antes posible y así facilitar el cambio manual en caso de fallo.',
            node: 'Nodo',
            addr: 'Dirección',
            nodeUpgrade: 'Configuración de Actualización',
            nodeUpgradeHelper:
                'Los nodos seleccionados comenzarán a actualizarse automáticamente después de que se complete la actualización del nodo maestro, sin necesidad de operación manual.',
            nodeUnhealthy: 'Estado del nodo anómalo',
            deletedNode: 'El nodo eliminado {0} no soporta operaciones de actualización.',
            nodeUnhealthyHelper:
                'Se ha detectado un estado anómalo en el nodo. Revisa [Gestión de Nodos] e inténtalo de nuevo.',
            nodeUnbind: 'Nodo no vinculado a licencia',
            nodeUnbindHelper:
                'Se ha detectado que este nodo no está vinculado a una licencia. Vincúlalo desde [Ajustes del Panel - Licencia] e inténtalo de nuevo.',
            memTotal: 'Memoria Total',
            nodeManagement: 'Gestión Multi-Máquina',
            nodeItem: 'Gestión de Nodos',
            panelItem: 'Gestión de Paneles',
            addNode: 'Añadir Nodo',
            connInfo: 'Información de Conexión',
            nodeInfo: 'Información del Nodo',
            withProxy: 'Habilitar Acceso por Proxy',
            withoutProxy: 'Deshabilitar Acceso por Proxy',
            withProxyHelper:
                'Utilizará el proxy del sistema {0} mantenido en la configuración del panel para acceder a los nodos secundarios. ¿Continuar?',
            withoutProxyHelper:
                'Dejará de usar el proxy del sistema mantenido en la configuración del panel para acceder a los nodos secundarios. ¿Continuar?',
            syncInfo: 'Sincronización',
            syncHelper:
                'Cuando cambian los datos en el nodo principal, se sincronizan en tiempo real con este nodo secundario.',
            syncBackupAccount: 'Configuración de Cuentas de Respaldo',
            syncWithMaster:
                'Tras actualizar a Pro, todos los datos se sincronizarán por defecto. Las políticas de sincronización se pueden ajustar manualmente en la gestión de nodos.',
            syncProxy: 'Configuración del Proxy del Sistema',
            syncProxyHelper: 'La sincronización del proxy del sistema requiere reiniciar Docker.',
            syncProxyHelper1: 'Reiniciar Docker puede afectar a los contenedores actualmente en ejecución.',
            syncProxyHelper2: 'Puedes reiniciar manualmente desde la página Contenedores → Configuración.',
            syncProxyHelper3:
                'La sincronización del proxy del sistema requiere reiniciar Docker, lo que puede afectar a servicios en ejecución.',
            syncProxyHelper4:
                'La sincronización del proxy del sistema requiere reinicio de Docker. Puedes reiniciar manualmente más tarde en Contenedores → Configuración.',
            syncCustomApp: 'Sincronizar Repositorio de Apps Personalizadas',
            syncAlertSetting: 'Configuración de Alertas del Sistema',
            syncNodeInfo: 'Datos básicos del nodo,',
            nodeSyncHelper: 'La sincronización de información de nodos incluye:',
            nodeSyncHelper1: '1. Información de cuentas de respaldo públicas',
            nodeSyncHelper2: '2. Información de conexión entre el nodo principal y los nodos secundarios',
            nodeCheck: 'Comprobación de Disponibilidad',
            checkSSH: 'Verificar conexión SSH del nodo',
            checkUserPermission: 'Verificar permisos de usuario en el nodo',
            isNotRoot: 'Se ha detectado que este nodo no soporta sudo sin contraseña y el usuario actual no es root',
            checkLicense: 'Verificar estado de licencia del nodo',
            checkService: 'Verificar servicios existentes en el nodo',
            checkPort: 'Verificar accesibilidad del puerto del nodo',
            panelExist:
                'Se ha detectado que este nodo ejecuta 1Panel V1. Actualiza a V2 usando el script de migración antes de añadirlo.',
            coreExist:
                'Este nodo ya está configurado como nodo principal y no puede añadirse directamente como nodo secundario. Debe degradarse primero a nodo esclavo. Consulta la documentación.',
            agentExist:
                'Se ha detectado que 1panel-agent ya está instalado en este nodo. Continuar conservará los datos y solo reemplazará el servicio de 1panel-agent.',
            agentNotExist:
                'Se ha detectado que 1panel-agent no está instalado en este nodo, por lo que la información no puede editarse directamente. Elimínalo y vuelve a añadirlo.',
            oldDataExist:
                'Se han detectado datos históricos de 1Panel V2 en este nodo. La siguiente información sobrescribirá la configuración actual:',
            errLicense: 'La licencia vinculada a este nodo no es válida. Revisa e inténtalo de nuevo.',
            errNodePort:
                'El puerto del nodo [ {0} ] no es accesible. Verifica si el firewall o el grupo de seguridad permiten este puerto.',
            reinstallHelper: '¿Reinstalar el nodo {0}? ¿Quieres continuar?',
            unhealthyCheck: 'Comprobación Anómala',
            fixOperation: 'Operación de Corrección',
            checkName: 'Elemento de Comprobación',
            checkSSHConn: 'Comprobar disponibilidad de conexión SSH',
            fixSSHConn: 'Edita manualmente el nodo para confirmar la información de conexión',
            checkConnInfo: 'Comprobar información de conexión del agente',
            checkStatus: 'Comprobar disponibilidad de servicios del nodo',
            fixStatus:
                'Ejecuta "systemctl status 1panel-agent.service" para verificar si el servicio está en ejecución.',
            checkAPI: 'Comprobar disponibilidad de la API del nodo',
            fixAPI: 'Revisa los logs del nodo y verifica si los puertos del firewall están abiertos correctamente.',
            forceDelete: 'Eliminación Forzada',
            operateHelper: 'Los siguientes nodos se someterán a la operación {0}, ¿quieres continuar?',
            forceDeleteHelper: 'La eliminación forzada ignorará errores y borrará metadatos de la base de datos.',
            uninstall: 'Eliminar datos del nodo',
            uninstallHelper:
                'Esto eliminará todos los datos relacionados con 1Panel de este nodo. Procede con precaución.',
            baseDir: 'Directorio de Instalación',
            baseDirHelper: 'Si el directorio de instalación está vacío, se instalará en /opt por defecto.',
            nodePort: 'Puerto del Nodo',
            offline: 'Modo Offline',
            freeCount: 'Cuota gratuita [{0}]',
            offlineHelper: 'Usado cuando el nodo está en un entorno sin conexión',
        },
        customApp: {
            name: 'Repositorio de Apps Personalizadas',
            appStoreType: 'Fuente de Paquetes del App Store',
            appStoreUrl: 'URL del Repositorio',
            local: 'Ruta Local',
            remote: 'Enlace Remoto',
            imagePrefix: 'Prefijo de Imagen',
            imagePrefixHelper:
                'Función: Personaliza el prefijo de la imagen y modifica el campo image en el archivo compose. Ejemplo: si el prefijo es 1panel/custom, la imagen de MaxKB pasará a ser 1panel/custom/maxkb:v1.10.0',
            closeHelper: 'Cancelar el uso del repositorio de apps personalizadas',
            appStoreUrlHelper: 'Solo se admite el formato .tar.gz',
            postNode: 'Sincronizar al nodo secundario',
            postNodeHelper:
                'Sincroniza el paquete del repositorio personalizado en tmp/customApp/apps.tar.gz dentro del directorio de instalación del nodo secundario',
            nodes: 'Nodos',
            selectNode: 'Seleccionar Nodo',
            selectNodeError: 'Por favor, selecciona un nodo',
            licenseHelper: 'La versión Pro admite la función de repositorio de aplicaciones personalizadas',
            databaseHelper: 'Base de datos asociada a la aplicación, seleccione la base de datos del nodo destino',
            nodeHelper: 'No se puede seleccionar el nodo actual',
            migrateHelper:
                'Actualmente solo admite la migración de aplicaciones monolíticas y aplicaciones asociadas únicamente con bases de datos MySQL, MariaDB, PostgreSQL',
            opensslHelper:
                'Si se utiliza copia de seguridad cifrada, las versiones de OpenSSL entre los dos nodos deben ser consistentes, de lo contrario la migración puede fallar.',
        },
        alert: {
            isAlert: 'Alerta',
            alertCount: 'Número de alertas',
            clamHelper: 'Generar alerta al detectar archivos infectados en escaneo',
            cronJobHelper: 'Generar alerta cuando falle la ejecución de una tarea programada',
            licenseHelper: 'La versión Pro soporta alertas SMS',
            alertCountHelper: 'Frecuencia máxima diaria de alertas',
            alert: 'Alerta SMS',
            logs: 'Logs de alertas',
            list: 'Lista de alertas',
            addTask: 'Crear alerta',
            editTask: 'Editar alerta',
            alertMethod: 'Método',
            alertMsg: 'Mensaje de alerta',
            alertRule: 'Reglas de alerta',
            titleSearchHelper: 'Introduce el título de alerta para búsqueda difusa',
            taskType: 'Tipo',
            ssl: 'Expiración de certificado',
            siteEndTime: 'Expiración de sitio web',
            panelPwdEndTime: 'Expiración de contraseña del panel',
            panelUpdate: 'Nueva versión de panel disponible',
            cpu: 'Alerta de CPU',
            memory: 'Alerta de memoria',
            load: 'Alerta de carga',
            disk: 'Alerta de disco',
            website: 'Sitio web',
            certificate: 'Certificado SSL',
            remainingDays: 'Días restantes',
            sendCount: 'Envíos',
            sms: 'SMS',
            wechat: 'WeChat',
            dingTalk: 'DingTalk',
            feiShu: 'FeiShu',
            mail: 'Correo',
            weCom: 'WeCom',
            sendCountRulesHelper: 'Número total de alertas enviadas antes de expirar (una vez al día)',
            panelUpdateRulesHelper: 'Alertas totales enviadas por nueva versión del panel (una vez al día)',
            oneDaySendCountRulesHelper: 'Número máximo de alertas diarias',
            siteEndTimeRulesHelper: 'Los sitios sin fecha de expiración no generan alertas',
            autoRenewRulesHelper:
                'Los certificados con auto-renovación habilitada y menos de 31 días restantes no generan alerta',
            panelPwdEndTimeRulesHelper:
                'La alerta de expiración de contraseña no aplica si no se ha configurado expiración',
            sslRulesHelper: 'Todos los certificados SSL',
            diskInfo: 'Disco',
            monitoringType: 'Tipo de monitorización',
            autoRenew: 'Auto-renovación',
            useDisk: 'Uso de disco',
            usePercentage: 'Porcentaje de uso',
            changeStatus: 'Cambiar estado',
            disableMsg: 'Detener la tarea de alerta evitará que envíe mensajes. ¿Continuar?',
            enableMsg: 'Al habilitar la tarea podrá enviar mensajes de alerta. ¿Continuar?',
            useExceed: 'Uso excedido',
            useExceedRulesHelper: 'Genera alerta cuando el uso supera el valor configurado',
            cpuUseExceedAvg: 'El uso medio de CPU supera el valor especificado',
            memoryUseExceedAvg: 'El uso medio de memoria supera el valor especificado',
            loadUseExceedAvg: 'La carga media supera el valor especificado',
            cpuUseExceedAvgHelper: 'El uso medio de CPU en el periodo supera el valor configurado',
            memoryUseExceedAvgHelper: 'El uso medio de memoria en el periodo supera el valor configurado',
            loadUseExceedAvgHelper: 'La carga media en el periodo supera el valor configurado',
            resourceAlertRulesHelper: 'Nota: múltiples alertas en 30 minutos se unifican en una',
            specifiedTime: 'Tiempo especificado',
            deleteTitle: 'Eliminar alerta',
            deleteMsg: '¿Seguro que quieres eliminar esta tarea de alerta?',
            allSslTitle: 'Alertas de expiración de certificados SSL en todos los sitios',
            sslTitle: 'Alerta de expiración de certificado SSL en sitio {0}',
            allSiteEndTimeTitle: 'Alertas de expiración de todos los sitios web',
            siteEndTimeTitle: 'Alerta de expiración para sitio {0}',
            panelPwdEndTimeTitle: 'Alerta de expiración de contraseña del panel',
            panelUpdateTitle: 'Notificación de nueva versión de panel',
            cpuTitle: 'Alerta de alta CPU',
            memoryTitle: 'Alerta de alta memoria',
            loadTitle: 'Alerta de alta carga',
            diskTitle: 'Alerta de alto uso de disco en {0}',
            allDiskTitle: 'Alerta de alto uso de disco',
            timeRule: 'Tiempo restante menor a {0} días (si no se gestiona, se reenviará al día siguiente)',
            panelUpdateRule:
                'Al detectar nueva versión del panel se envía una alerta (si no se gestiona, se reenviará al día siguiente)',
            avgRule: 'Uso medio de {1} supera {2}% en {0} minutos, genera alerta, {3} envíos/día',
            diskRule: 'Uso de disco en {0} supera {1}{2}, genera alerta, {3} envíos/día',
            allDiskRule: 'Uso de disco supera {0}{1}, genera alerta, {2} envíos/día',
            cpuName: 'CPU',
            memoryName: 'Memoria',
            loadName: 'Carga',
            diskName: 'Disco',
            syncAlertInfo: 'Push manual',
            syncAlertInfoMsg: '¿Deseas enviar manualmente la tarea de alerta?',
            pushError: 'Error en push',
            pushSuccess: 'Push exitoso',
            syncError: 'Error de sincronización',
            success: 'Alerta enviada',
            pushing: 'Enviando...',
            error: 'Error de alerta',
            cleanLog: 'Limpiar logs',
            cleanAlertLogs: 'Limpiar logs de alertas',
            daily: 'Alertas diarias: {0}',
            cumulative: 'Alertas acumuladas: {0}',
            clams: 'Alerta de escaneo antivirus',
            taskName: 'Nombre de tarea',
            cronJobType: 'Tipo de tarea',
            clamPath: 'Directorio a escanear',
            cronjob: 'Fallo en ejecución de cronjob {0}',
            app: 'Backup de app',
            web: 'Backup de sitio',
            database: 'Backup de base de datos',
            directory: 'Backup de directorio',
            log: 'Backup de logs',
            snapshot: 'Snapshot del sistema',
            clamsRulesHelper: 'Tareas de escaneo antivirus que requieren alerta',
            cronJobRulesHelper: 'Este tipo de tareas programadas necesita configuración',
            clamsTitle: 'Tarea antivirus 「 {0} 」 detectó archivo infectado',
            cronJobAppTitle: 'Cronjob - Backup de app 「 {0} 」 falló',
            cronJobWebsiteTitle: 'Cronjob - Backup de sitio 「 {0} 」 falló',
            cronJobDatabaseTitle: 'Cronjob - Backup de base de datos 「 {0} 」 falló',
            cronJobDirectoryTitle: 'Cronjob - Backup de directorio 「 {0} 」 falló',
            cronJobLogTitle: 'Cronjob - Backup de logs 「 {0} 」 falló',
            cronJobSnapshotTitle: 'Cronjob - Backup de snapshot 「 {0} 」 falló',
            cronJobShellTitle: 'Cronjob - Script shell 「 {0} 」 falló',
            cronJobCurlTitle: 'Cronjob - Acceso URL 「 {0} 」 falló',
            cronJobCutWebsiteLogTitle: 'Cronjob - Corte de logs web 「 {0} 」 falló',
            cronJobCleanTitle: 'Cronjob - Limpieza de caché 「 {0} 」 falló',
            cronJobNtpTitle: 'Cronjob - Sync hora de servidor 「 {0} 」 falló',
            clamsRule: 'Escaneo antivirus detectó infección, {0} envíos/día',
            cronJobAppRule: 'Fallo en backup de app, {0} envíos/día',
            cronJobWebsiteRule: 'Fallo en backup de sitio, {0} envíos/día',
            cronJobDatabaseRule: 'Fallo en backup de base de datos, {0} envíos/día',
            cronJobDirectoryRule: 'Fallo en backup de directorio, {0} envíos/día',
            cronJobLogRule: 'Fallo en backup de logs, {0} envíos/día',
            cronJobSnapshotRule: 'Fallo en backup de snapshot, {0} envíos/día',
            cronJobShellRule: 'Fallo en script shell, {0} envíos/día',
            cronJobCurlRule: 'Fallo en acceso URL, {0} envíos/día',
            cronJobCutWebsiteLogRule: 'Fallo en corte de logs web, {0} envíos/día',
            cronJobCleanRule: 'Fallo en limpieza de caché, {0} envíos/día',
            cronJobNtpRule: 'Fallo en sincronización de hora, {0} envíos/día',
            alertSmsHelper: 'Límite SMS: {0} mensajes totales, {1} usados',
            goBuy: 'Comprar más',
            phone: 'Teléfono',
            phoneHelper: 'Proporciona un número real para SMS de alertas',
            dailyAlertNum: 'Límite diario de alertas',
            dailyAlertNumHelper: 'Máximo de alertas por día (hasta 100)',
            timeRange: 'Rango de tiempo',
            sendTimeRange: 'Rango de envío',
            sendTimeRangeHelper: 'Puede enviarse en {0}',
            to: 'a',
            startTime: 'Hora inicio',
            endTime: 'Hora fin',
            defaultPhone: 'Usar el número vinculado a la licencia',
            noticeAlert: 'Alerta de notificación',
            resourceAlert: 'Alerta de recursos',
            agentOfflineAlertHelper: 'Con alerta offline habilitada, el nodo maestro escaneará cada 30 minutos.',
            offline: 'Alerta offline',
            offlineHelper: 'En modo offline, el nodo maestro escaneará cada 30 minutos para alertas.',
            offlineOff: 'Habilitar alerta offline',
            offlineOffHelper: 'Habilitar alerta offline hace que el nodo maestro ejecute alertas cada 30 minutos.',
            offlineClose: 'Desactivar alerta offline',
            offlineCloseHelper: 'Desactivarla obliga a que los sub-nodos gestionen alertas. Asegura conectividad.',
            alertNotice: 'Notificación de alerta',
            methodConfig: 'Config de métodos de notificación',
            commonConfig: 'Config global',
            smsConfig: 'SMS',
            smsConfigHelper: 'Configura teléfonos para notificaciones SMS',
            emailConfig: 'Correo',
            emailConfigHelper: 'Configura servicio SMTP de envío de correos',
            deleteConfigTitle: 'Eliminar configuración de alerta',
            deleteConfigMsg: '¿Seguro que quieres eliminar esta configuración?',
            test: 'Probar',
            alertTestOk: 'Notificación de prueba exitosa',
            alertTestFailed: 'Notificación de prueba fallida',
            displayName: 'Nombre mostrado',
            sender: 'Dirección remitente',
            password: 'Contraseña',
            host: 'Servidor SMTP',
            port: 'Puerto',
            encryption: 'Método de cifrado',
            recipient: 'Destinatario',
            licenseTime: 'Recordatorio de expiración de licencia',
            licenseTimeTitle: 'Recordatorio de expiración de licencia',
            displayNameHelper: 'Nombre remitente para correos',
            senderHelper: 'Correo usado como remitente',
            passwordHelper: 'Código de autorización del servicio de correo',
            hostHelper: 'Servidor SMTP, ej. smtp.qq.com',
            portHelper: 'SSL normalmente 465, TLS normalmente 587',
            sslHelper: 'Si el puerto es 465, requiere SSL',
            tlsHelper: 'Si el puerto es 587, requiere TLS',
            triggerCondition: 'Condición de disparo',
            loginFail: ' fallos de login en',
            nodeException: 'Alerta de excepción de nodo',
            licenseException: 'Alerta de excepción de licencia',
            panelLogin: 'Alerta de login en panel',
            sshLogin: 'Alerta de login SSH',
            panelIpLogin: 'Alerta de login en panel por IP',
            sshIpLogin: 'Alerta de login SSH por IP',
            ipWhiteListHelper: 'Las IPs en whitelist no tienen restricciones ni generan alerta en login exitoso',
            nodeExceptionRule: 'Alerta de nodo anómalo, {0} envíos/día',
            licenseExceptionRule: 'Alerta de licencia anómala, {0} envíos/día',
            panelLoginRule: 'Alerta de login en panel, {0} envíos/día',
            sshLoginRule: 'Alerta de login SSH, {0} envíos/día',
            userNameHelper: 'El nombre de usuario está vacío, se usará la dirección del remitente por defecto',
        },
        theme: {
            lingXiaGold: 'Ling Xia Gold',
            classicBlue: 'Azul clásico',
            freshGreen: 'Verde fresco',
            customColor: 'Color personalizado',
            setDefault: 'Por defecto',
            setDefaultHelper: 'La paleta de colores volverá al estado inicial. ¿Continuar?',
            setHelper: 'Se guardará la paleta actual como tema. ¿Continuar?',
        },
        exchange: {
            exchange: 'Intercambio de archivos',
            exchangeConfirm: '¿Quieres transferir {1} de {0} a {2}:{3}?',
        },
        cluster: {
            cluster: 'Alta disponibilidad de aplicaciones',
            name: 'Nombre del clúster',
            addCluster: 'Añadir clúster',
            installNode: 'Instalar nodo',
            master: 'Nodo maestro',
            slave: 'Nodo esclavo',
            replicaStatus: 'Estado maestro-esclavo',
            unhealthyDeleteError: 'El nodo tiene estado anómalo, revisa la lista e inténtalo de nuevo',
            replicaStatusError: 'Error al obtener estado, revisa el nodo maestro',
            masterHostError: 'La IP del nodo maestro no puede ser 127.0.0.1',
        },
    },
};

export default {
    ...fit2cloudEsEsLocale,
    ...message,
};
